通过间歇性WebApi服务进行呼叫时,SignalR连接失败

问题描述

我有一个角度应用程序,一个网关服务(网络api)和一个asp.net核心服务(其中存在SignalR集线器)。我正在尝试通过网关从角度应用程序连接到SignalR集线器,并且请求失败并出现以下错误

CORS策略已阻止从来源“(UI网站)”访问“(网关)/ signalR / connect / negotiate”处的XMLHttpRequest:对预检请求的响应未通过访问控制检查:“响应中的Access-Control-Allow-Credentials标头为”,当请求的凭证模式为“ include”时,标头必须为“ true”。 XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。

// UI代码: 这是我要从角度应用发布的请求。

const connection = new signalR.HubConnectionBuilder()
             .withUrl(https://gateway/signalr/connect)
             .withAutomaticReconnect()
             .build();

//网关代码: https:// gateway / signalr / connect是网关服务中的post api。

在网关发布api中,我正在连接到Signalr集线器,如下所示: https:// localhost:19081 /(myservice)/ SignalR /(myHub)

// SignalR服务: 还在我的信号发送器启动中添加了以下cors政策:

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

app.UseCors("SignalRPolicy");

app.UseAzureSignalR(routes =>
            {
                routes.MapHub<HubClass>("/<myhub>");
            });

如果我直接从UI调用SignalR集线器-该请求正在传递并成功连接到signalr。

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

请让我知道如何进行这项工作。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...