以前工作的asp.net webforms应用程序现在抛出这个错误:

系统。MissingMethodException:方法未找到

DoThis方法在同一个类上,它应该可以工作。

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

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

    public void DoThis(){ ... }
}

当前回答

为了子孙后代,我在使用azure持久函数/持久任务框架时遇到了这个问题。原来我在本地安装了一个过时的azure函数运行时版本。更新它解决了这个问题。

其他回答

我解决了这个问题,我做了一个搁置我的变化和运行TFS电动工具“烧焦”在我的工作空间(https://visualstudiogallery.msdn.microsoft.com/f017b10c-02b4-4d6d-9845-58a06545627f)。然后我取消了更改并重新编译项目。 这样你就可以清理你工作空间里的“挂着的聚会”,并重新开始一个新的聚会。 当然,这要求您使用TFS。

你试过把它关掉再打开吗?玩笑归玩笑,重启电脑才是真正让我成功的方法,其他答案中都没有提到。

检查你的推荐信!

确保在解决方案项目中始终指向相同的第三方库(不要只信任版本,要查看路径)。

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

我在所有3个项目中更改了对iTextSharp的引用,以指向相同的DLL,一切都正常工作。

只是为了帮助任何人,虽然这是一个老问题,我的问题有点奇怪。

我在使用Jenkins时遇到了这个错误。

最终发现系统日期被手动设置为未来日期,这导致dll使用该未来日期编译。当日期被设置回正常时,MSBuild解释为文件更新,不需要重新编译项目。

也有可能问题出在报告丢失的方法的参数或返回类型上,而“丢失”方法本身没有问题。

这就是我的情况,误导性的信息让我花了更长的时间来解决问题。事实证明,用于参数类型的程序集在GAC中有一个较旧的版本,但由于所使用的版本编号方案的更改,旧版本实际上具有更高的版本号。从GAC中删除旧版本/更高版本可以解决这个问题。