【问题标题】:Duplicate definitions in Microsoft.AspNet.SignalR.Core and Microsoft.AspNet.SignalR.OwinMicrosoft.AspNet.SignalR.Core 和 Microsoft.AspNet.SignalR.Owin 中的重复定义
【发布时间】:2016-07-16 17:51:50
【问题描述】:

我有一个使用 SignalR 和 Owin 的 Web 应用程序。除了其他人,我正在使用 NuGet 包:

  • Microsoft.AspNet.SignalR.Core:2.2.0
  • Microsoft.AspNet.SignalR.Owin:1.2.2
  • Microsoft.Owin:3.0.1
  • 欧文:1.0

当我使用 OwinHost.exe 启动 Owin 应用程序时,我总是在第一次请求后看到以下输出

从 'Microsoft.AspNet.SignalR.Owin,Version=1.2.2.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'.',Exception=System.Reflection.ReflectionTypeLoadException 获取类型时引发异常:无法加载一个或多个请求的类型。检索 LoaderExceptions 属性以获取更多信息。 在 System.Reflection.RuntimeModule.GetTypes(RuntimeModule 模块) 在 System.Reflection.Assembly.GetTypes() 在 System.Web.Http.Tracing.Tracers.DefaultHttpControllerTypeResolverTracer.GetTypesAndTrace(程序集 组装)

为了看到提到的 LoaderExceptions 属性,我在启动代码中添加了:

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);          
}

这产生了额外的输出:

System.TypeLoadException:无法从程序集“Microsoft.AspNet.SignalR.Core,版本=2.2.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”加载类型“Microsoft.AspNet.SignalR.Hosting.IWebSocketRequest”。 System.TypeLoadException:从程序集“Microsoft.AspNet.SignalR.Owin,版本=1.2.2.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”中键入“Microsoft.AspNet.SignalR.WebSockets.DefaultWebSocketHandler”正在尝试实现无法访问的接口。

下一步是手动实例化Microsoft.AspNet.SignalR.WebSockets.DefaultWebSocketHandler

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

不幸的是,这造成了编译错误:

“Microsoft.AspNet.SignalR.Core, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”和“Microsoft.AspNet.SignalR.Owin, Version=1.2.2.0”中都存在“DefaultWebSocketHandler”类型,文化=中立,PublicKeyToken=31bf3856ad364e35'

在对象浏览器中,我可以看到这是正确的。但我不知道,我怎样才能摆脱这个错误。

【问题讨论】:

    标签: signalr owin


    【解决方案1】:

    解决方案很简单:我只需要删除 Microsoft.AspNet.SignalR.Owin。

    在使用 ILSpy 检查了两个程序集后,我得出了这个解决方案。我从Microsoft.AspNet.SignalR.CoreObsoleteOwinExtensions 中找到了OwinExtensionsMicrosoft.AspNet.SignalR.Owin。此外,我已经在使用来自Microsoft.AspNet.SignalR.CoreOwinExtensions

    另一个提示可能是 Microsoft.AspNet.SignalR.Owin 的过时版本...

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      相关资源
      最近更新 更多