2014-02-27 30 views
2

所以我通過Nuget安裝了SignalR,它取決於它隨後安裝的Microsoft.Owin。每當我運行我的應用程序時,它會在Startup.cs和app.MapSignalR();行中引發一個FileLoadException。它說「文件或程序集」Microsoft.Owin,Version = 2.0.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其某個依賴項無法加載。找到的程序集的清單定義與程序集的引用不匹配「。'Microsoft.Owin'上的FileLoadException

我相信它包含了Microsoft.Owin.dll但是當我試圖通過的NuGet重新安裝它,它說,它無法重新安裝Microsoft.Owin.XML

Startup.cs

using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartup(typeof(SignalRChat.Startup))] 
namespace SignalRChat 
{ 
    public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      // Any connection or hub wire up and configuration should go here 
      app.MapSignalR(); 
     } 
    } 
} 

回答

0

SignalR的最新版本依賴於Microsoft.Owin 2.0.2.0,而不是2.0.1.0。請參閱以下教程 - 您需要在包管理器中添加Microsoft.AspNet.SignalR.SelfHost,而不是Microsoft.Owin。

http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-signalr-20-self-host

+0

這實際上並沒有解決任何問題,因爲它在調用'app.MapSignalR();'時完成同樣的事情。唯一的區別是它現在是'Microsoft.Owin.Security'而不是'Microsoft.Owin' ... – Highace2

+0

這是因爲它的目標版本高於設置爲在app.config中重定向的版本 – Highace2

2

有時包參考特定版本的其他軟件包。你可以嘗試在你的web.config文件添加綁定重定向爲Microsoft.Owin(在<runtime>部分):

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" /> 
</dependentAssembly> 

這說明引用的是舊版本比2.1.0.0使用2.1.0.0代替一切。

+0

這實際上已經加入到了'通過的NuGet經理web.config'。所以這沒有解決任何問題。 – Highace2

相關問題