设置SignalR以使用Azure服务总线时,我必须丢失一些东西。我有我的应用程序服务(API - Web API 2)设置运行3个常量实例(当前),启动时,API使用服务总线连接字符串并设置适当的主题前缀。SignalR通过Azure服务总线
在前端,SignalR能够连接到我的API,但消息有时只能由客户端接收。我的假设是,客户端只接收来自它最初连接的服务器的消息。这导致我相信SignalR没有正确使用服务总线。当通过Azure查看服务总线时,我确实看到正在创建主题,但其中没有任何消息(我也看到了订阅)。
所以,据我所知,客户端和服务器之间的SignalR仍然使用直接连接,而不是通过服务总线。请注意,客户端正在使用API的URL用于SignalR连接 - 这是正确的吗?
SignalRConfig(在应用程序启动时。)
var serviceBusConnectionString = configHelper.SignalR.ServiceBusConnectionString;
var serviceBusTopicPrefix = configHelper.SignalR.TopicPrefix;
Logger.Info("SignalR: configuring");
// Use the service bus, if specified.
if (serviceBusConnectionString != null && serviceBusTopicPrefix != null) {
Logger.Info("SignalR: using service bus");
GlobalHost.DependencyResolver.UseServiceBus(serviceBusConnectionString, serviceBusTopicPrefix);
}
app.MapSignalR();
上面的代码运行的每个实例,我不知道这是否正确与否。也许这就是为什么我看到多个主题,例如signalr_topic_my-app-staging_0
- 0到5
请注意,我试图按照这个(过时)教程:https://docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-windows-azure-service-bus
您使用哪个nuget软件包?本教程中的nuget包已被弃用。您应该使用Microsoft.AspNet.SignalR.ServiceBus – Thomas
最新的'Microsoft。*。SignalR *',可以提供具体信息,如果需要的话,我会回到我的电脑前。 –