Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net CORS错误发生在信号机协商阶段_Asp.net_Signalr_Asp.net Core 3.1 - Fatal编程技术网

Asp.net CORS错误发生在信号机协商阶段

Asp.net CORS错误发生在信号机协商阶段,asp.net,signalr,asp.net-core-3.1,Asp.net,Signalr,Asp.net Core 3.1,从Asp.net core 2.2迁移到3.1后,控制台中出现以下错误 Access to XMLHttpRequest at 'someuri/negotiate?negotiateVersion=1' from origin 'http://localhost:4208' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resourc

从Asp.net core 2.2迁移到3.1后,控制台中出现以下错误

Access to XMLHttpRequest at 'someuri/negotiate?negotiateVersion=1' from 
origin 'http://localhost:4208' 
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested 
resource.
以及以下
信号机
配置:

app.UseCors(Constants.Policy);
app.UseAuthentication();

app.UseEndpoints(
          endpoints =>
          {
             endpoints.MapHub<SomeHub>("/ws/someuri");
          });

但是它没有帮助。

您应该以这种方式配置
CORS
,并且顺序非常重要

在配置方法上:

public override void Configure(IApplicationBuilder应用程序、主机配置主机配置、ILogger记录器)
{
配置(应用程序、主机配置、记录器);
app.UseWebSockets();
app.UseCors(CorsPolicy);//首先配置CORS,然后配置map Hub
app.UseEndpoints(端点=>
{
endpoints.MapHub(“/someuri”);
});
}
然后,在添加COR时:

//
///添加CORS。
/// 
私人void AddCors(IServiceCollection服务)
{
services.AddCors(选项=>
{
options.AddPolicy(CorsPolicy,builder=>builder.WithOrigins(“http://localhost:4208")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.SetIsOriginAllowed((主机)=>true));
});
}

您可以看到更详细的答案。

谢谢,我会尽力的,但是我应该更新Angular Signal软件包吗???@VladislavFurdak客户端软件包已从
@aspnet/signal
迁移到
@microsoft/signal
,因此您应该将软件包升级到3.1.3版:然后从uri中删除
ws
。另外,请添加您如何连接到服务器的Angular代码。如何传递令牌在客户端?你有安替比妥吗?如前所述,请添加客户端代码。
options.AddPolicy(Constants.Policy,
                    p => 
                        p.AllowAnyHeader()
                       .AllowAnyMethod()
                       .AllowCredentials()
                       .WithOrigins("http://localhost:4208"));