asp.net-mvc-4 - 更新到 v.1.0.1 后 SignalR 在 AppHarbor 上收到 403 (Chrome)

标签 asp.net-mvc-4 signalr appharbor

我使用的是 SignalR v.1.0.0 RC2,它工作得很好。当我升级到 v.1.0.1 时,它停止工作。当我尝试调用集线器上的方法时,现在收到 403(禁止)。我没有更改任何代码 - 我只更新到了 SignalR 的新版本。需要注意的是,当我在本地运行它时,我没有任何问题 - 仅当我在 AppHarbor 上运行它时,并且仅在 Chrome 浏览器中运行它时。它适用于 IE 10 和 Firefox 20。

我知道SignalR的新版本已经做了一些授权方面的工作。现在,您可以在集线器或集线器方法上添加授权属性。我想这样做,但首先我希望它能够在没有 - 就像以前那样的情况下工作。

这是我的中心:

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 设置。

关于asp.net-mvc-4 - 更新到 v.1.0.1 后 SignalR 在 AppHarbor 上收到 403 (Chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16415041/

相关文章:

c# - Context.Request.Cookies 和 Context.RequestCookies 之间的 SignalR 区别

asp.net-mvc-3 - 本地文件的路径

mysql - linq lambda 复合键 where 和 group by

javascript - 将 Razor 代码分配给 JavaScript 变量时出现意外标记非法

asp.net-mvc-4 - ASP.NET MVC4 如何在一条规则中将 js 和 css 一起创建 bundle ?

asp.net-mvc - SignalR Asp.net core Web 应用程序中消息未从服务器发送到客户端

c# - 使用 Javascript 在 MVC 中渲染部分 View

asp.net - 在集线器上下文之外调用 SignalR 集线器中的 Caller 方法

asp.net-mvc - ASP.NET MVC - 数据库的替代品

visual-studio - MSBuild 中的 PreBuildEvent、BeforeBuild 目标和 BeforeCompile 目标之间有什么区别?