[C#] System.MissingMethodException: ¿Método no encontrado?


Answers

Resolví este problema instalando la versión correcta de .NET Framework en el servidor. El sitio web se estaba ejecutando con la versión 4.0 y el ensamblado al que estaba llamando se compiló para 4.5. Después de la instalación de .NET Framework 4.5 y la actualización del sitio web a 4.5, todo funciona bien.

Question

Lo que antes funcionaba en mi aplicación asp.net webforms arroja ahora este error:

System.MissingMethodException: Método no encontrado

El método DoThis está en la misma clase y debería funcionar.

Tengo un controlador genérico como tal:

public class MyHandler: IHttpHandler
{
    public void Processrequest(HttpContext context)
    {
      // throws error now System.MissingMethodException: Method not found?
      this.DoThis(); 
    }

    public void DoThis()
    {
    //
    }
}



En mi caso, spotify.exe estaba usando el mismo puerto que mi proyecto de API web quería usar en una máquina de desarrollo. El número de puerto era 4381.

Salí de Spotify y todo funcionó bien de nuevo :)




Versión incorrecta del paquete de Nuget

Tenía un proyecto de prueba de unidad que estaba tirando de nuestro paquete de acceso a datos EF Nuget de nuestra compañía y esa versión estaba muy por detrás de la versión actual.

La configuración de Nuget para el paquete mencionado anteriormente usaba la least version para esos otros paquetes que eran los paquetes de segundo nivel dependientes.

Por lo tanto, obtuvo silenciosamente la versión incorrecta para una asamblea relacionada .

Solución

Al configurar / actualizar el paquete en Nuget para [obtener] el último problema solucionado.




En mi caso, fue un problema de copiar / pegar. De alguna manera terminé con un constructor PRIVADO para mi perfil de mapeo:

using AutoMapper;

namespace Your.Namespace
{
    public class MappingProfile : Profile
    {
        MappingProfile()
        {
            CreateMap<Animal, AnimalDto>();
        }
    }
}

(tome nota del "público" que falta delante del ctor)

que compiló perfectamente bien, pero cuando AutoMapper intenta crear una instancia del perfil no puede (¡por supuesto!) encontrar el constructor!




¿Has intentado encender y apagar nuevamente? Bromas aparte, reiniciar mi computadora fue lo que realmente funcionó para mí y no se menciona en ninguna de las otras respuestas.




¡Revisa tus referencias!

Asegúrese de estar constantemente apuntando a las mismas bibliotecas de terceros (no solo confíe en las versiones, mire la ruta) en sus proyectos de soluciones.

Por ejemplo, si utiliza iTextSharp v.1.00.101 en un proyecto y NuGet o hace referencia a iTextSharp v1.00.102 en otro lugar, obtendrá estos tipos de errores de tiempo de ejecución que de alguna manera se filtran a su código.

Cambié mi referencia a iTextSharp en los 3 proyectos para apuntar a la misma DLL y todo funcionó.




Si desarrolla con su propio servidor NuGet, asegúrese de que las versiones de ensamblaje sean todas iguales:

[assembly: AssemblyVersion("0.2.6")]
[assembly: AssemblyFileVersion("0.2.6")]
[assembly: AssemblyInformationalVersion("0.2.6")]



también ... ¡trate de "limpiar" sus proyectos o soluciones y reconstruir nuevamente!




En caso de que ayude a alguien, aunque es un problema antiguo, mi problema era un poco extraño.

Tuve este error al usar Jenkins.

Eventualmente descubrió que la fecha del sistema se estableció manualmente en una fecha futura, lo que provocó que se compilara dll con esa fecha futura. Cuando la fecha volvió a ser normal, MSBuild interpretó que el archivo era más nuevo y no requería la recompilación del proyecto.




Resolví este problema haciendo un conjunto de estanterías con mis cambios y ejecutando TFS Power Tools 'scorch' en mi área de trabajo ( https://visualstudiogallery.msdn.microsoft.com/f017b10c-02b4-4d6d-9845-58a06545627f ). Luego desmantelé los cambios y recompuse el proyecto. De esta manera limpiarás cualquier 'fiesta colgante' que pueda existir en tu área de trabajo y se iniciará con una nueva. Esto requiere, por supuesto, que esté usando TFS.




Tuve la misma ocurrencia cuando tuve varios procesos de MSBuild ejecutándose en segundo plano que se habían bloqueado efectivamente (tenían referencias a versiones anteriores de código). Cerré VS y maté todos los procesos de MSBuild en el explorador de procesos y luego volví a compilar.