我用SignalR(v2.1.1.0)创建了一个新的MVC5 asp.net网站 SignalR部分托管在Web应用程序中。
我添加了一个新的Hub:MainHub.cs
using BackEnd.Models;
using BackEnd.Utils;
using Microsoft.AspNet.SignalR;
using Microsoft.Practices.Unity;
namespace BackEnd.Hubs
{
public class MainHub : Hub
{
// Code
}
}
然后我通过右键单击项目添加了一个新的StartUp文件 - >添加新的OWIN Statup类'并将其命名为Startup.cs' :
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(BackEnd.Startup))]
namespace BackEnd
{
public class Startup
{
public static Configs.ContainerInjection container;
public void Configuration(IAppBuilder app)
{
container = new Configs.ContainerInjection();
container.Configure();
app.MapSignalR();
}
}
}
这是我的配置文件:Web.config
<appSettings>
<add key="owin:AutomaticAppStartup" value="true" />
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
...
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
</system.web>
但是当我在本地IIS上启动应用程序时,&#39;配置&#39;在启动文件中不调用方法。但它在IIS Express(localhost:3405)
上启动时确实有效我使用&#39; DefaultApp Pool&#39;使用Framework v4.0和Integrated Pipeline模式以及&#39; Microsoft.Owin.Host.SystemWeb&#39;正确放置在&#39; / bin&#39;文件夹中。
我做错了什么?
答案 0 :(得分:3)
安装SystemWeb主机,你会没事的。
Install-Package Microsoft.Owin.Host.SystemWeb
这会安装一个httphandler来调用starup。
答案 1 :(得分:0)
OwinStartupAttribute位于Microsoft.Owin.dll中。你在bin文件夹中有这个吗?您在应用程序bin文件夹中还有其他Owin dll吗?