我的应用程序上正在运行SignalR。我可以将HubContext注入我的控制器,然后通过从网络浏览器访问控制器上的GET端点来触发消息。
因此,我可以在控制器上打开两个浏览器窗口,一个打开至Web应用程序,另一个打开至GET URL。当我访问窗口2中的GET URL时,我可以在窗口1中看到消息返回。成功!
但是...
我在不同的域中有一部分应用程序。这是我在iframe中显示的外部Web应用程序。为了分离问题,我将回调URL作为参数发送到外部Web应用程序。在该外部应用程序中完成某些工作后,用户单击“保存”按钮,然后该应用程序将发布到我发送的回调URL。回调URL指向控制器上的端点,我可以说代码一直在运行。但是,应该在最后一行代码中将上述SignalR消息广播回上述窗口1中的Web应用。即使通过POST访问端点,也会遇到SignalR消息。
我本以为这可能是由于CORS政策所致,但我已尽可能宽大处理。也可能是因为我不太清楚SignalR的工作原理,我需要写一篇在前端进行民意测验的文章,但这似乎可以否定我能够通过浏览器进行推送的事实。 / p>
按照本文的建议(Issue with SignalR core and cross domain requests),我尝试了以下操作,并使用星号,窗口1域和外部应用程序域。没有工作。
services.AddCors(options => options.AddPolicy("CorsPolicy", builder =>
{
builder
.AllowAnyMethod()
.AllowAnyHeader()
.WithOrigins("*")
.AllowCredentials(); ;
}));
有什么想法吗?