【问题标题】:FileLoadException on 'Microsoft.Owin''Microsoft.Owin' 上的 FileLoadException
【发布时间】:2014-02-27 08:59:49
【问题描述】:

所以我已经通过 Nuget 安装了 SignalR,它取决于随后安装的 Microsoft.Owin。每当我运行我的应用程序时,它都会在 Startup.cs 中的 app.MapSignalR(); 行中抛出一个 FileLoadException。它说“文件或程序集 'Microsoft.Owin, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一无法加载。找到的程序集的清单定义与程序集的引用不匹配。”

我确定它包含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();
        }
    }
}

【问题讨论】:

    标签: c# asp.net signalr fileloadexception


    【解决方案1】:

    有时包是指其他包的特定版本。您可以尝试在您的web.config 文件(在<runtime> 部分)中为Microsoft.Owin 添加绑定重定向:

    <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

    【讨论】:

    • 这实际上已经被 Nuget 经理添加到 web.config 中。所以这并没有解决任何问题。
    【解决方案2】:

    最新版本的 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

    【讨论】:

    • 这实际上并没有解决任何问题,因为它在调用app.MapSignalR(); 时所做的事情完全相同。唯一的区别是它现在是 Microsoft.Owin.Security 而不是 Microsoft.Owin...
    • 这是因为它针对的版本比它在 app.config 中设置的重定向更高
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多