以前工作的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(){ ... }
}

当前回答

我使用了一种在上面的回复中没有提到的方法来解决这个问题。

在我的例子中,调用类方法的项目的目标项目框架设置不正确。

(调用项目的目标框架不正确。被调用的类/方法的目标框架是正确的,我保持不变)。

其他回答

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

可能的情况是

不匹配的nuget组件版本

问题详解

我们有一个解决方案生成了多个nuget包。

packageA 1.0中的类A

packageB 1.0中的B类

A参考B

所以当A和B都有更新时,我们必须更新packageA和packagb,但问题是我的团队成员之一没有更新packagb

现在PackageA 1.1仍然依赖于PackageB 1.0,但PackageB没有B类的更新版本

因此,它无法找到方法

解决方案

移动两个包到+1版本 在这种情况下,我移动了

PackageA 1.1 -> PackageA 1.2 .

包装0 . 1.1

但为了使事情更加对称,可以将两者移动到相同的版本

PackageA 1.1 -> PackageA 1.2 .

PackageB 1.0 -> PackageB 1.2

当DLL的旧版本仍然在某个地方徘徊时,就会出现这个问题。确保部署了最新的程序集,并且某些文件夹中没有隐藏重复的旧程序集。最好的办法是删除所有构建的项目,然后重新构建/重新部署整个解决方案。

我在测试同事编写的一些代码时遇到了这个异常。以下是异常信息的摘要:

方法未找到:“System.Threading.Tasks.Task1< microsoft . entityframeworkcore . changetrackingentityentry1 <System_Canon>> . System_Canon . changetrackingentityentry1” Microsoft.EntityFrameworkCore.DbSet“1. addasync…

这是在Visual Studio 2019中针对. net Core 3.1的类库中。修复方法是在DbSet上使用Add方法而不是AddAsync。

在更新各种Nuget包后遇到这个错误。检查Visual Studio错误列表(或构建输出),查看类似以下的警告:

发现同一依赖项的不同版本之间存在冲突 组装。在Visual Studio中,双击此警告(或选择它) 并按Enter)来修复冲突;否则,添加如下内容 绑定重定向到应用程序中的“运行时”节点 配置文件: ...

在Visual Studio中双击此警告会自动调整我的web中的各种bindingRedirect包版本。配置并解决了错误。