SignalR 2 hub未与ASP MVC 5 Web应用程序一起部署

时间:2016-03-17 18:38:30

标签: asp.net asp.net-mvc azure signalr

我有一个ASP.NET MVC应用程序,它引用另一个项目,即SignalR应用程序。网络偶尔会调用SignalR应用程序。我刚刚在Microsoft Azure服务器上部署了Web。部署还包括SignalR中心,可通过mysite.azurewebsites.net/signalr/hubs获得。

现在,我在Web应用程序中进行了一些更新,并希望再次重新上传整个解决方案。但是,我无法同时部署这两个项目。我可以部署SignalR集线器或Web应用程序,但mysite.azurewebsites.net/signalr/hubs找不到任何集线器。

起初我以为它是由ASP MVC应用程序中的路由更改引起的。我改变了

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        )

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}",
            defaults: new { controller = "Home", action = "Index" }
        );

但即使在恢复更改后,我也无法同时部署这两个应用程序。我不明白,问题可能在哪里。

我所做的一个重大改变是将ASP.NET Identity包添加到我的网站。该软件包还使用OWIN库(类似于SignalR)。这可能是问题吗?我希望不会,因为那时我将不得不重新做整个数据库......

修改

我尝试将Startup类移动到ASP.MVC应用程序中:

[assembly: OwinStartup(typeof(MyMvcApp.Startup))]
namespace MyMvcApp
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
        }
    }
}

但它似乎没有找到当前组件之外的任何集线器。

1 个答案:

答案 0 :(得分:0)

问题是我在Web.config中重写了启动:

<add key="owin:AppStartup" value="MyMvcApp.IdentityConfig" />

删除此行并将代码从IdentityConfig.cs移至Startup.cs解决了此问题。