SignalR不再工作"找不到包含OwinStartupAttribute的程序集"

Stu*_*ang 17 asp.net signalr asp.net-web-api owin

我有一个使用SignalR的Web API项目,它开始让我"经常无法找到Microsoft.AspNet.Signal.Core"错误,这些错误只能通过在Visual Studio中进行完全重建来解决.

我在Nuget中升级了SignalR和OWIN以尝试修复此问题,但现在我总是得到"尝试加载应用程序时出现以下错误. - 找不到包含OwinStartupAttribute的程序集. - 找不到包含Startup或[AssemblyName]的程序集.Startup类"

我是团队中唯一一个得到此错误的人 - 相同的代码在其他计算机上运行正常.

我有一个启动类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(MyProject.Startup))]
namespace MyProject
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试将AppStartup键添加到web.config中:

<add key="owin:appStartup" value="MyProject.Startup, MyProject" />
Run Code Online (Sandbox Code Playgroud)

我在WebApi项目中有以下参考:

Microsoft.AspNet.SignalR.Core (2.1.0.0)
Microsoft.AspNet.SignalR.SystemWeb (2.1.0.0)
Microsoft.Owin (2.0.2.0)
Microsoft.Owin.Host.SystemWeb (2.0.2.0)
Microsoft.Owin.Security (2.0.2.0)
Owin (1.0.0)
Run Code Online (Sandbox Code Playgroud)

我在Windows 8 64Bit上使用IIS 8.5

N_E*_*N_E 32

我在Identity Framework 2.0集成期间遇到此错误.在项目的Web.config文件中添加以下内容解决了它:

<appSettings>
  <add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)


Stu*_*ang 3

看来 Nuget 没有正确升级 SignalR 依赖项(它必须检查版本是否在范围内并且不打扰更新),因此解决方案中使用了 2 个版本的 OWIN 程序集。

所以在 WebApi 项目中:SignalR 2.1.0 和 Microsoft.Owin 2.0.2.0

在另一个项目中:SignalR 2.1.0 和 Microsoft.Owin 2.0.1.0

Visual Studio 也不会在构建时发现版本不兼容问题,因此当 Web 项目加载时,OWIN 会引发严重错误(Microsoft.Owin 2.0.1.0 程序集已复制到 Web 项目 bin 文件夹中)。

为了解决这个问题,我必须在过时的项目上“更新包 Microsoft.Owin -version 2.0.2.0”,清理并重建所有内容。

更新:

仍然遇到同样的问题。我现在认为这是 SignalR 2.1.0 和 Owin 2.0.2.0 之间的一些不兼容问题。