Swa*_*gam 5 c# asp.net-web-api2
我在我的web api 2应用程序中添加了两个自定义消息处理程序,如下所示 https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/http-message-handlers
然后在Register方法中注册它们,
config.MessageHandlers.Add(new LogHandler());
config.MessageHandlers.Add(new HeaderHandler());
Run Code Online (Sandbox Code Playgroud)
启动时出现此错误:
Method not found: 'System.Collections.ObjectModel.Collection`1
System.Web.Http.HttpConfiguration.get_MessageHandlers()'.
Run Code Online (Sandbox Code Playgroud)
我发现这个问题的根本原因是 .net 标准引用经常引入对不同版本包的引用,如 System.Net.Http 作为包的依赖项。
我在更新 StackExchange.Redis 时遇到了这个问题。它在本地运行良好,但是当部署到服务器时它会崩溃。
为了解决这个问题,我为 System.Net.Http 添加了一个绑定重定向
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
在搜索了几个小时后,我意识到这是因为添加了对.NET标准库项目的引用.
一旦我删除了另一个项目,这个错误消失了,应用程序运行正常.
另外需要注意的是,只有当我添加自己的消息处理程序并引用.Net标准库时,问题才会模拟.
| 归档时间: |
|
| 查看次数: |
1034 次 |
| 最近记录: |