无法加载文件或程序集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网站目录还有什么,我可以尝试?

很想找到问题的根本原因,因为它为什么在本地工作,但不在Azure中,但基于此answer,您应该尝试将Microsoft OWIN本身 - 通过NuGet直接安装到项目中这是失败的。

+0

Owin 1.0.0包本身已经安装在项目中。 –

+0

@RyanShripat检查其他项目(如果有的话),并确保它们都引用相同的版本。我会建议检查包管理器,看看是否有更新。 – Nkosi