有没有办法在 ASP.NET Core 2.2 MVC 中专门为 SignalR 集线器设置 CORS 策略?

Is there a way to set CORS policy solely for a SignalR hub in ASP.NET Core 2.2 MVC?

我有一个 ASP.NET Core 2.2 MVC 项目,我需要专门为 SignalR hub 设置 CORS 策略,但不是全局(不是为所有控制器和操作)。如果我通过添加 app.UseCors() 来遵循建议,它会在全球范围内起作用,我只需要为 SignalR 应用该策略。有办法吗?

我也试过 this 但没有成功。

编辑 2019-07-22 18:33 CEST

这是我使用的 CORS 策略:

services.AddCors(o =>
            {
                o.AddPolicy("MyCorsPolicy", b =>
                {
                    b.AllowAnyHeader()
                    .AllowAnyMethod()
                    .SetIsOriginAllowed(s => true)
                    .AllowCredentials();
                });
            });

经过几个小时的尝试,我不得不求助于 GitHub,这就是 Brennan Conroy 的建议:https://github.com/aspnet/AspNetCore/issues/12564

而且有效!

编辑 2019-07-29 13:40 CEST

这就是帮助:

app.Map("/path", c =>
{
    c.UseCors("somePolicy");
    c.UseSignalR(route =>
    {
        route.MapHub<MyHub>("/hub");
    });
});

客户端将通过“/path/hub”连接到集线器。