asp.net-mvc-4 - 自定义 header 和 Signalr : Asp.Net MVC4 Web Api

标签 asp.net-mvc-4 asp.net-web-api signalr

我在我的 asp.net mvc4 webapi 项目中使用信号器(版本 2.0.0),

这里允许跨源资源共享,我在webconfig文件中使用以下代码

 <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <remove name="X-Powered-By" />
  </customHeaders>

这是用于从服务器接收数据的客户端信号器代码:
 $(function () {
    var nodePublishingHub = $.connection.nodePublishingHub;
    nodePublishingHub.client.NodePublished = onNewMessage;

    $.connection.hub.error(function (error) {
        $('#messages').append('<li>' + error + '</li>');
    });

    $.connection.hub.url = "http://localhost:5441/signalr";
    $.connection.hub.start({ transport: 'longPolling' })
});

我正在使用以下代码通过信号器启用 CORS,
 public void Configuration(IAppBuilder app)
    {
        app.Map("/signalr", map =>
        {
            map.UseCors(CorsOptions.AllowAll);
            var hubConfiguration = new HubConfiguration
            {
                EnableJSONP = true
            };
            map.RunSignalR(hubConfiguration);
        });
    }

然而出现错误,
XMLHttpRequest cannot load http://localhost:5441/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%…name%22%3A%22nodepublishinghub%22%7D%5D&clientProtocol=1.3&_=1386654835296. The 'Access-Control-Allow-Origin' header contains the invalid value 'null, *'. Origin 'null' is therefore not allowed access.

我该如何解决这个问题?请帮忙。

我尝试了以下,
  • 我在 golbal.asax 中添加了这段代码,但它只会使每个方法都启用 cros,所以我无法从服务器获取图像进行处理。
      HttpContext.Current.Response.Headers.Add("Access-Control-Allow-Origin", "*");
    
  • 最佳答案

    不要修改信号器原始源代码。何时更新您的代码将停止工作。

    更喜欢这个:

    $.connection.hub.start({ withCredentials: false }).done(function () {
      //...
    }
    
    start({ withCredentials: false })而不是典型的 start()会做的工作。
    您可以验证here (GitHub issue tracker)官方支持。

    关于asp.net-mvc-4 - 自定义 header 和 Signalr : Asp.Net MVC4 Web Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20487351/

    相关文章:

    c# - EntityFramework.6.1.2-beta1\tools\init.ps1 被限制,无法运行 enable-migrations 命令

    c# - ASP.Net MVC 网站和 Web API 作为单一实现

    c# - 在异步方法中使用时 SignalR 调用不返回

    asp.net-mvc - 刷新数据库更改页面

    asp.net-mvc-4 - 无法使用 mvc4 html.beginform(...) 传递多个参数

    asp.net-mvc-4 - Web Api 共享 DTO

    c# - 将 Entity Framework 4.4 与 Mysql 结合使用

    asp.net - 在 ASP.NET Web/API 应用程序中同时使用 cookie 和 JWT token

    asp.net - 在 Web API 格式化程序中设置过期/缓存 header

    c# - 是否可以将 IObservable<T> 转换为 IAsyncEnumerable<T>