部署到Azure时未注册SignalR集线器

时间:2014-08-01 21:42:58

标签: azure signalr owin signalr-hub

我在Azure中以Web角色运行SignalR。它已经完美地工作了大约一年。但是,在更新到VS2013并更新所有软件包之后,似乎在部署到Azure时未创建我的SignalR集线器。冲浪到http://mysite.cloudapp.net/signalr/hubs时,我得到一个"值不能为空。参数:key"错误,客户端也无法连接。

但是,它仍可在我的计算机上的Azure开发结构中完美运行。

可能有什么不对?我有一个启动SignalR注册的Startup类:

[assembly: OwinStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

OWIN通过NuGet更新为2.1.0.0。

为了在Azure生产环境中创建集线器,我还需要做些什么吗?

2 个答案:

答案 0 :(得分:0)

如果你还没有在Azure上启用WebSockets,也许你应该这样做。 根据asp.net网站:

  

在Azure网站上启用WebSockets

     

需要在Azure网站中明确启用WebSockets   用于SignalR应用程序;否则,将使用其他协议   (有关详细信息,请参阅运输和后备)。

     

请注意,WebSockets仅适用于Basic和Standard层   Azure网站,以及活动Web Socket连接的数量   基本层网站受限制。请参阅网站定价详细信息   更多信息。

     

要在Azure网站上使用WebSockets,请在中创建   网站的配置部分。为此,请在中打开您的网站   Azure管理门户,然后选择配置。在顶部   配置页面,确保您的网站使用.NET 4.5。在   在“配置”页面的底部,选择“保存”以保存您的   变化。

答案 1 :(得分:0)

解决方案是在Visual Studio中重新创建Web角色项目并手动添加所有代码。一个可能的罪魁祸首是web.config及其修改方式,然后在更新和安装NuGet包时重新修改,尽管我无法确定。但是当从新的Visual Studio项目(使用相同的代码)开始新的时,它工作得很好。