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
{
.....
}