我有一个应用程序,我有2个实例在同一个IIS服务器上运行。
两者中的相同源代码,只是不同的设置。我在两个站点都有signalR代码,但我希望Site2使用Site1的signalR服务器。
我有这个工作,所以如果在Site1上进行了更改,Site2知道刷新,并且工作正常。问题是,如果在Site2上进行服务器更改(而不是javascript),则Site1无法获取它们。以下是我的代码:
Startup.cs
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
#if DEBUG
EnableDetailedErrors = true
#endif
};
map.RunSignalR(hubConfiguration);
});
javascript代码:
$.connection.hub.url = "http://servername/Site1/signalr";
...$.connection.start etc
所有这些似乎都运行正常,但我无法在任何地方找到的是如何将C#代码中的设置从Site2推送到Site1。
随机c#代码:
var hub = GlobalHost.ConnectionManager.GetHubContext<myHub>();
这个globalhost.connectionmanager.gethubcontext始终指向自己。如何在最后一节中让Site2指向Site1?我已经尝试过编辑Startup.cs以使用MapSignalR(.. path,...),但路径不是采用绝对URL,而是必须以&#39; /&#39开头,所以它不会升级。
任何想法或我错过了什么基本的东西?
答案 0 :(得分:0)
显然我正在寻找的是背板。 https://docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-in-signalr。超级易于设置,并立即修复我的问题(不需要任何上面的任何javascript更改)。