2014-07-16 26 views
16

我有一个使用SignalR的Web API项目,它开始时经常给我“无法找到Microsoft.AspNet.Signal.Core”错误,这些错误只能通过执行完整在Visual Studio中重建。SignalR不再工作“没有发现包含OwinStartupAttribute的程序集”

我在Nuget中升级了SignalR和OWIN以尝试修复此问题,但现在我总是收到“试图加载应用程序时出现以下错误 - 未找到包含OwinStartupAttribute的程序集 - 未找到包含启动程序的程序集或[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(); 
     } 
    } 
} 

我曾尝试加入AppStartup关键web.config中太:

<add key="owin:appStartup" value="MyProject.Startup, MyProject" /> 

我有我的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) 

我在Windows 8上使用IIS 8.5 64位

+0

我认为它需要类是静态和方法了。 – Anders

+0

请确保您的webconfig中没有“”。删除此行或将值设置为“true”。 –

+0

添加一个OWIN启动类。详情在这里: http://stackoverflow.com/a/23995265/1818795 – Justin

回答

2

似乎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 Project bin文件夹中)。

要修复我不得不在过时的项目上“update-package Microsoft.Owin -version 2.0.2.0”,清理并重建所有内容。

更新:

仍然收到同样的问题。我现在假设它是SignalR 2.1.0和Owin 2.0.2.0之间的一些不兼容问题。

29

我在Identity Framework 2.0集成期间出现此错误。 在的Web.config文件项目的添加关注解决它:

<appSettings> 
    <add key="owin:AutomaticAppStartup" value="false" /> 
</appSettings> 
+0

谢谢!这为我修好了。 – AdamC