我在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生产环境中创建集线器,我还需要做些什么吗?
答案 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项目(使用相同的代码)开始新的时,它工作得很好。