我有一个使用 signalR 和 Forms 身份验证并发布到 Azure 服务的 MVC 应用程序 - 在 MVC4、SignalR 1.1.2 上运行良好 我们升级到 VS 2013 以及所有软件包中最新最好的 MVC 5.5.2 和 signalR 2.1。 2,并对通过 OWIN 映射 SignalR 进行了必要的更改
现在,当我没有登录时,signalR 会按预期工作并使用 WebSockets 进行连接。但是当我登录并刷新同一页面时,signalR 不再起作用。
通过 websockets 连接时出现 403 错误
然后它尝试服务器发送的事件,返回为(已取消)
然后长轮询也因 403 - Forbidden 错误而失败
请注意,在本地运行时它工作正常,只是在发布到天蓝色服务时我遇到了这个问题
我一定是我想念的简单的东西。有人做过类似的升级吗?
它是一个大型应用程序,因此不能真正共享太多代码,但本质上我所做的只是连接到 signalR 集线器
<script type="text/javascript" src="/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
// SignalR - Initialise
var dashboardHub = $.connection.miHub;
// start signalR hub - this will connect the user
$.connection.hub.start();
});
</script>
和枢纽类
public class MiHub : Hub
{
public override Task OnConnected()
{
ConnectUser();
return null;
}
....
}
当我没有登录到我的应用程序时,开发工具会显示以下内容:
wss://myservice.cloudapp.net/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=...
response 101
wss://myservice.cloudapp.net/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=...
response 200
{ "Response": "started" }
当我登录并在同一页面上按 F5 时,我得到
wss://myservice.cloudapp.net/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=...
response 403