2017-06-30 175 views
1

我的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網站目錄還有什麼,我可以嘗試?

回答

0

很想找到問題的根本原因,因爲它爲什麼在本地工作,但不在Azure中,但基於此answer,您應該嘗試將Microsoft OWIN本身 - 通過NuGet直接安裝到項目中這是失敗的。

+0

Owin 1.0.0包本身已經安裝在項目中。 –

+0

@RyanShripat檢查其他項目(如果有的話),並確保它們都引用相同的版本。我會建議檢查包管理器,看看是否有更新。 – Nkosi

相關問題