1

我有一个使用 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
4

0 回答 0