该应用程序一直在 .net core 2.1 中完美运行。signalR 服务器的配置类似于public void ConfigureServices(IServiceCollection services)
方法中的以下代码片段:
```
services.AddCors(setupAction =>
setupAction.AddPolicy("MyPolicy",
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()))
```
在配置方法中,我有以下代码片段:
```
app.UseCors("MyPolicy")
```
Angular 客户端应用程序的代码像以下代码片段一样启动连接:
```
this._connection = this._connection || new HubConnectionBuilder()
.withUrl('https://localhost:44314/xyz/test?abc=123', options)
.build();
```
正如我所说,此设置一直运行良好。我将 .net 核心应用程序(signalR 服务器)从 2.1 升级到 2.2(dotnetcore SDK 版本 2.2.101),并将 signalR 客户端包升级到 1.1.0。signalR 服务器为 Angular 应用程序和另一个 C# 应用程序提供服务。C# 应用程序完美地连接到 signalR 服务器,它会做它应该做的任何事情,但是 angular 应用程序会产生以下错误消息:
从源“ https://localhost:44303 ”访问“ https://localhost:44314/xyz/test/negotiate?abc=123 ”的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:当请求的凭据模式为“包含”时,响应中的“Access-Control-Allow-Origin”标头的值不能是通配符“*”。XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。
在 Angular 应用程序和 C# 客户端应用程序中,signalR 客户端的版本都是 1.1.0。
升级到 .net core 2.2 的任何原因导致此通信失败以及可能的解决方案是什么?!