无法加载文件或程序集Microsoft.Owin在Azure上时,IIS本地运行
问题描述:
我的ASP.Net MVC应用程序工作正常,但是当部署到Azure中提供了以下错误:无法加载文件或程序集Microsoft.Owin在Azure上时,IIS本地运行
Could not load file or assembly 'Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
这是一块堆栈跟踪,导致我相信SignalR是一个潜在的罪魁祸首:
[FileLoadException: Could not load file or assembly 'Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
Owin.OwinExtensions.MapSignalR(IAppBuilder builder, String path, HubConfiguration configuration) +0
Owin.OwinExtensions.MapSignalR(IAppBuilder builder, HubConfiguration configuration) +12
QuikWorx.O365Web.Startup.Configuration(IAppBuilder app) +169
根据的NuGet,我有版本Microsoft.Owin 3.0.1上的应用程序安装,但显然事情(SignalR)需要2.1版本0.0。我本来以为以下bindingRedirect将迫使SignalR使用已安装的版本3.0.1(验证目前,3.0.1版在Azure上/箱):
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
...但很可惜,这不是案子。
我也尝试没有成功如下:用的NuGet Microsoft.Owin 3.0.1
- 强制重新安装。
- 强制的SignalR部件的重装(Microsoft.AspNet.SignalR.Core)需要Microsoft.Owin 2.1.0用的NuGet
- 改变bindingRedirect的oldVersion为Microsoft.Owin为“0.0.0.0-2.1.0.0 “(这是没有意义的)
- 卸下bindingRedirect为Microsoft.Owin
- 删除所有文件和文件夹在捻
使用rd /Q /S
网站目录还有什么,我可以尝试?
Owin 1.0.0包本身已经安装在项目中。 –
@RyanShripat检查其他项目(如果有的话),并确保它们都引用相同的版本。我会建议检查包管理器,看看是否有更新。 – Nkosi