WebAPI与Signalr开发中的跨域要注意的细节

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011508145/article/details/79495596
            app.Map("/signalr", map =>
            {
                map.UseCors(CorsOptions.AllowAll);
                var hubConfiguration = new HubConfiguration
                { };
                map.RunSignalR(hubConfiguration);
            });

上面这个代码块中,引用动态库为:Microsoft.Owin.Cors  和   Microsoft ASP.NET.WebAPI.Cors

有2个核心问题:

1.Owin 库(构建项目自带)有自己的跨域,而且优先级非常高,会导致Microsoft.Owin.Cors无效

2.Microsoft.Owin.Cors 冲突于Web.config 的 Access-Control-Allow-Origin

代码正确方式:

1.Nuget 安装 Microsoft ASP.NET.WebAPI.Cors

2. Nuget 安装 Signalr

3.Nuget安装 类库 Microsoft.Owin.Cors

4.WebApiConfig 使用 config.EnableCors()

5.移除Web.config 中 httpProtocol 节点下的 Access-Control-Allow-Origin 相关内容

6.在跨域Conntroller中的类属性中加入

    [EnableCors("*", "*", "*")]
    public class FireInfoController : ApiController
    {
      .....
    }

猜你喜欢

转载自blog.csdn.net/u011508145/article/details/79495596