2016-03-29 10 views
0

私はSignalRとOwinを使用したWebアプリケーションを持っています。他の人のほかに、私はNuGetパッケージを使用しています:Microsoft.AspNet.SignalR.CoreとMicrosoft.AspNet.SignalR.Owinで定義が重複しています

  • Microsoft.AspNet.SignalR.Core:2.2.0
  • Microsoft.AspNet.SignalR.Owin:1.2.2
  • Microsoft.Owin:3.0。 1
  • Owin:1.0

私はOwinHost.exeを使用してOwinアプリケーションを起動すると、私はいつも最初の要求

後、次のoututを参照してください手動 Microsoft.AspNet.SignalR.WebSockets.DefaultWebSocketHandlerをインスタンス化する

System.TypeLoadException: Could not load type 'Microsoft.AspNet.SignalR.Hosting.IWebSocketRequest' from assembly 'Microsoft.AspNet.SignalR.Core, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. System.TypeLoadException: Type 'Microsoft.AspNet.SignalR.WebSockets.DefaultWebSocketHandler' from assembly 'Microsoft.AspNet.SignalR.Owin, Version=1.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is attempting to implement an inaccessible interface.

次のステップだった:

try 
{ 
    Assembly a = Assembly.Load("Microsoft.AspNet.SignalR.Owin"); 
    var types = a.GetTypes(); 
} 
catch (ReflectionTypeLoadException e)   
{ 
    foreach (var e2 in e.LoaderExceptions) 
    Console.WriteLine(e2);   
} 

これは、追加の出力を生成:前述LoaderExceptionsプロパティを見るために210

は、私は自分のスタートアップコードに追加しました

var handler = new Microsoft.AspNet.SignalR.WebSockets.DefaultWebSocketHandler(); 

残念ながら、これによりコンパイルエラーが発生しました:

The type 'DefaultWebSocketHandler' exists in both 'Microsoft.AspNet.SignalR.Core, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' and 'Microsoft.AspNet.SignalR.Owin, Version=1.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

オブジェクトブラウザでは、これが正しいことがわかります。しかし、私はエラーを取り除く方法を知りません。

答えて

0

解決方法は簡単です:Microsoft.AspNet.SignalR.Owinを削除するだけでした。

ILSpyを使用して2つのアセンブリを検査した後、このソリューションに着きました。 ObsoleteOwinExtensionsOwinExtensionsMicrosoft.AspNet.SignalR.OwinからMicrosoft.AspNet.SignalR.Coreに見つかった。また、すでにOwinExtensionsMicrosoft.AspNet.SignalR.Coreから使用していました。

もう1つのヒントは、Microsoft.AspNet.SignalR.Owin ...

の古いバージョンでした。
関連する問題