相关疑难解决方法(0)

交叉原点SignalR连接在协商后停止

我有一个MVC 5应用程序提供视图,一个Web API 2应用程序作为服务层(.NET 4.5).Web API应用程序使用SignalR 2.1.2在处理POST到服务API时返回进度.这两个部署到不同的域,所以我根据asp.net教程文章设置了跨源支持.

[assembly: OwinStartup(typeof (Startup))]
namespace MyApp.Service
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.Map("/signalr", map =>
            {
                //worry about locking it down to specific origin later
                map.UseCors(CorsOptions.AllowAll);
                map.RunSignalR(new HubConfiguration());
            });
            //now start the WebAPI app
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

WebApiConfig.cs还包含自己的CORS声明.

namespace MyApp.Service
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            //controller invocations will come from the MVC project which is deployed to a
            //different domain, …
Run Code Online (Sandbox Code Playgroud)

cors signalr asp.net-web-api signalr-hub

6
推荐指数
1
解决办法
5996
查看次数

自定义标头和信号器:Asp.Net MVC4 Web Api

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

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

 <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <remove name="X-Powered-By" />
  </customHeaders>
Run Code Online (Sandbox Code Playgroud)

以下是用于从服务器接收数据的客户端信号器代码:

 $(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' })
});
Run Code Online (Sandbox Code Playgroud)

我使用以下代码启用带信号器的CORS,

 public void Configuration(IAppBuilder app)
    {
        app.Map("/signalr", map =>
        {
            map.UseCors(CorsOptions.AllowAll);
            var hubConfiguration = new HubConfiguration
            {
                EnableJSONP = true
            };
            map.RunSignalR(hubConfiguration);
        });
    }
Run Code Online (Sandbox Code Playgroud)

但是会发生错误,

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 …
Run Code Online (Sandbox Code Playgroud)

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

5
推荐指数
2
解决办法
2974
查看次数

信号器CORS问题

在我的服务器端,我正在使用带有信号器的web api 2.在我的客户端,我正在使用angularjs.

当我启动信号器连接时,这是http请求:

> GET
> http://example.com/signalr/negotiate?clientProtocol=1.4&connectionData=%5B%7B%22name%22%3A%22main%22%7D%5D&_=1416702959615 HTTP/1.1 Host: mysite.net Connection: keep-alive Pragma: no-cache
> Cache-Control: no-cache Accept: text/plain, */*; q=0.01 Origin:
> http://lh:51408 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65
> Safari/537.36 Content-Type: application/x-www-form-urlencoded;
> charset=UTF-8 Referer: http://localhost:51408/ Accept-Encoding: gzip,
> deflate, sdch Accept-Language: en-US,en;q=0.8 Cookie:
> ARRAffinity=9def17406de898acdc2839d0ec294473084bbc94a8f600c867975ede6f136080
Run Code Online (Sandbox Code Playgroud)

并回应:

> HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache
> Transfer-Encoding: chunked Content-Type: application/json;
> charset=UTF-8 Expires: -1 Server: Microsoft-IIS/8.0
> X-Content-Type-Options: nosniff X-AspNet-Version: 4.0.30319 …
Run Code Online (Sandbox Code Playgroud)

asp.net cors signalr angularjs

4
推荐指数
1
解决办法
6081
查看次数