Asp.net web api 通过间歇WebApi服务调用时信号器连接失败

Asp.net web api 通过间歇WebApi服务调用时信号器连接失败,asp.net-web-api,signalr,azure-service-fabric,api-gateway,Asp.net Web Api,Signalr,Azure Service Fabric,Api Gateway,我有一个angular应用程序、一个网关服务(web api)和一个asp.net核心服务(其中有SignalR hub)。我正在尝试通过网关从angular应用程序连接到SignalR hub,请求失败,出现以下错误: CORS策略已阻止在“(网关)/signer/connect/negotiate”处从源(UI网站)”访问XMLHttpRequest:对飞行前请求的响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。XMLHttp

我有一个angular应用程序、一个网关服务(web api)和一个asp.net核心服务(其中有SignalR hub)。我正在尝试通过网关从angular应用程序连接到SignalR hub,请求失败,出现以下错误:

CORS策略已阻止在“(网关)/signer/connect/negotiate”处从源(UI网站)”访问XMLHttpRequest:对飞行前请求的响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。XMLHttpRequest启动的请求的凭据模式由withCredentials属性控制

//用户界面代码: 这是我从angular应用程序发布的请求

const connection = new signalR.HubConnectionBuilder()
             .withUrl(https://gateway/signalr/connect)
             .withAutomaticReconnect()
             .build();
//网关代码: https://gateway/signalr/connect 是网关服务中的post api

在gateway post api中,我连接到signalr hub,如下所示: https://localhost:19081/(我的服务)/信号员/(我的中心)

//信号员服务: 在我的信号机启动中还添加了以下cors策略:

services.AddCors(options => options.AddPolicy("SignalRPolicy", builder =>
                    {
                        builder.AllowAnyHeader()
                               .AllowCredentials()
                               .AllowAnyMethod()
                               .WithOrigins(<allowedorigins>);
                    }));

app.UseCors("SignalRPolicy");

app.UseAzureSignalR(routes =>
            {
                routes.MapHub<HubClass>("/<myhub>");
            });
services.AddCors(options=>options.AddPolicy(“SignalRPolicy”,builder=>
{
builder.AllowAnyHeader()
.AllowCredentials()
.AllowAnyMethod()
.WithOrigins();
}));
附录UseCors(“信号政策”);
应用程序UseAzureSignal(路线=>
{
路线。MapHub(“/”);
});
如果我直接从UI调用SignalR集线器-此请求正在成功传递并连接到SignalR

这里网关服务和我的信号器服务都托管在azure服务结构上。要求是,所有来自UI的调用都需要通过网关


请让我知道我如何才能做到这一点。谢谢。

您使用的是什么网关?支持信号员。您的网关可能需要支持web套接字并映射所有信号器路由。您使用的网关是什么?支持信号员。您的网关可能需要支持web套接字并映射所有信号器路由。