我有一个使用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();
}
}
}
我也试过将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 64Bit上使用IIS 8.5
答案 0 :(得分:31)
我在Identity Framework 2.0集成期间遇到此错误。 在项目的 Web.config 文件中添加以下内容解决了它:
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
答案 1 :(得分: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文件夹)。
要修复我必须&#34; update-package Microsoft.Owin -version 2.0.2.0&#34;在过时的项目中,清理并重建一切。
更新:
仍然遇到同样的问题。我现在假设它在SignalR 2.1.0和Owin 2.0.2.0之间存在一些不兼容问题。