System.MissingMethodException:找不到方法?

use*_*007 226 c# asp.net dll httphandler nuget

什么曾经在我的asp.net webforms应用程序中工作现在抛出此错误:

System.MissingMethodException:找不到方法

DoThis方法在同一个类上,它应该工作.

我有一个通用的处理程序:

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

    public void DoThis()
    {
    //
    }
}
Run Code Online (Sandbox Code Playgroud)

Pol*_*ity 357

这是一个问题,当旧版本的DLL仍然在某处挥之不去时,可能会发生这种问题.确保部署了最新的程序集,并且没有重复的旧程序集隐藏在某些文件夹中.您最好的选择是删除每个构建的项目并重建/重新部署整个解决方案.

  • 特别是,请确保旧版本不在GAC中. (59认同)
  • 我发现在调试时打开Debug - > Windows - > Modules窗口很有用,可以看到从哪里加载程序集. (13认同)
  • 此外,如果您正在处理一个不幸的情况,您有一个依赖于库的库,这取决于库等.然后确保使用相同版本的dll清理/重建所有依赖库,在我的情况下NHibernate ...... (6认同)
  • 我已经多次被 GAC 问题所困扰,正如我在过去某个时候刚刚再次“发现”这个答案时已经对 @ladenedge 的评论投了赞成票所证明的那样。 (3认同)
  • 升级项目的.NET目标框架也可以修复错误.我正在升级面向.NET 4.5的MVC4/Web API 1项目.在升级了所有MVC,Web API和Entity Framework依赖项后,我遇到了同样的错误; 将目标框架更改为.NET 4.5.1会使错误消失. (2认同)

Ben*_*pka 25

我通过在服务器上安装正确的.NET Framework版本来解决此问题.该网站在4.0版本下运行,它调用的程序集编译为4.5.安装.NET Framework 4.5并将网站升级到4.5后,一切正常.

  • .NET 3.5编译目标和安装.NET 3的一些问题.我真的很想知道为什么启动时没有更基本的警告...... (2认同)

Ωme*_*Man 22

错误的Nuget包版本

我有一个单元测试项目,该项目吸引了我们公司的EF Nuget数据访问包,该版本远远落后于当前版本.

将前述包的Nuget设置设置为least version那些作为第二级依赖包的其他包.

因此,它默默地为相关程序集提供了错误的版本.

通过设置/更新Nuget中的包来[get]最新修复的问题.


Jel*_*ani 21

重新启动Visual Studio实际上为我修复了它.我认为它是由仍在使用的旧程序集文件引起的,执行"清理构建"或重新启动VS应该修复它.


use*_*080 7

另外..尝试“清理”您的项目或解决方案并再次重建!


Jos*_*Noe 5

我有一个在同一个程序集中引用的文件,而不是一个单独的dll.一旦我从项目中排除了文件然后再次包含它,一切都运行正常.


Mar*_*uer 5

我刚刚在.NET MVC项目中遇到过这个问题.根本原因是NuGet包的冲突版本.我有几个项目的解决方案.每个项目都有一些NuGet包.在一个项目中,我有一个企业库语义记录包的版本,在另外两个项目(引用第一个)中,我有相同包的旧版本.这一切都编译没有错误,但当我尝试使用该包时,它给出了一个神秘的"找不到方法"错误.

修复是从两个项目中删除旧的NuGet包,因此它只包含在实际需要它的一个项目中.(我也对整个解决方案进行了彻底的重建.)


Jul*_*uls 5

检查您的参考!

确保您在解决方案项目中始终指向相同的第三方库(不仅仅是信任版本,而是着眼于路径)。

例如,如果在一个项目中使用iTextSharp v.1.00.101,而在其他地方使用NuGet或引用iTextSharp v1.00.102,您将得到这些类型的运行时错误,这些错误会以某种方式滴入您的代码中。

我在所有3个项目中都将对iTextSharp的引用更改为指向相同的DLL,并且一切正常。