Asp.net mvc 4 更新到v后,信号机在AppHarbor上获得403。1.0.1(铬)

Asp.net mvc 4 更新到v后,信号机在AppHarbor上获得403。1.0.1(铬),asp.net-mvc-4,signalr,appharbor,Asp.net Mvc 4,Signalr,Appharbor,我用的是信号机v。1.0.0 RC2,运行良好。当我升级到v。1.0.1它停止工作。当我试图调用中心上的方法时,我现在得到了一个403禁止。我没有更改任何代码-我只更新到了新版本的SignalR。重要的是要注意,我在本地运行它时没有任何问题——只有在AppHarbor上运行时,并且只有在Chrome浏览器中运行。它适用于IE10和Firefox20 我知道在新版本的SignalR中已经完成了一些授权工作。现在,您可以在中心或中心方法上添加Authorize属性。我想这样做,但首先我希望它能在没有

我用的是信号机v。1.0.0 RC2,运行良好。当我升级到v。1.0.1它停止工作。当我试图调用中心上的方法时,我现在得到了一个403禁止。我没有更改任何代码-我只更新到了新版本的SignalR。重要的是要注意,我在本地运行它时没有任何问题——只有在AppHarbor上运行时,并且只有在Chrome浏览器中运行。它适用于IE10和Firefox20

我知道在新版本的SignalR中已经完成了一些授权工作。现在,您可以在中心或中心方法上添加Authorize属性。我想这样做,但首先我希望它能在没有任何干扰的情况下工作——就像以前一样

这是我的中心:

using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;

public class ReceptionHub : Hub
{
    public Task Join(string group)
    {
        return Groups.Add(Context.ConnectionId, group);
    }
}
这是我从标记中的数据属性获取组的客户端站点脚本:

$(function () {
    var receptionHub = $.connection.receptionHub;

    receptionHub.client.updateStatusBar = function (checkedIn, checkedOut, preRegistered)
    {
        $('#quantityCheckedInToday').html(checkedIn);
        $('#quantityCheckedOutToday').html(checkedOut);
        $('#quantityPreRegistered').html(preRegistered);
    };

    $.connection.hub.start().done(function () {
        var group = $("#statusBar").data("group");
        receptionHub.server.join(group);
    });
});
我的本地设置和AppHarbor上的设置之间的一个区别是,我在HTTPS上运行AppHarbor站点,但这以前不是问题。此外,AppHarbor上的服务器前面有一个负载平衡器

失败的请求是对此URL的POST请求:

/signalr/send?transport=serverSentEvents&connectionToken=5hSSl7wSPrkD51cmPNw-JCrrdxMn2qOgEgmKt5gKrE4jigE4Sxha3gALHREcyDslqb7xjY9fP8rTMpslKuBJzBCIi-q86ZmHt66xhqi2eioAtvQCO03XlcR0Dq9-RW5G0

非常感谢您提供的任何帮助

我现在已经尝试使用SignalR 1.1.2,但它在Chrome中仍然不起作用,但这次它给出了更好的错误消息。上面说CORS被关掉了。我尝试在配置中打开CORS:

var config = new HubConfiguration
    {
        EnableCrossDomain = true
    };

// Register the default hubs route: ~/signalr
RouteTable.Routes.MapHubs(config);

这解决了我的问题,现在它又在Chrome中工作了。我不知道为什么需要打开CORS才能在Chrome中工作。。。可能是一些特殊的AppHarbor设置。

我现在尝试使用SignalR 1.1.2,但它在Chrome中仍然不起作用,但这次它给出了更好的错误消息。上面说CORS被关掉了。我尝试在配置中打开CORS:

var config = new HubConfiguration
    {
        EnableCrossDomain = true
    };

// Register the default hubs route: ~/signalr
RouteTable.Routes.MapHubs(config);
这解决了我的问题,现在它又在Chrome中工作了。我不知道为什么需要打开CORS才能在Chrome中工作。。。也许是一些特殊的安装