将 SignalR 服务添加为单例,然后将 redis 添加到其中
Adding SignalR service as a singleton and then adding redis to it
你好我有一个应用程序 运行 使用 orleans 和 signalR 我使用 HubConnectionBuilder 像这样初始化我的 SignalRClient
public async Task<HubConnection> InitSignalRCLient()
{
Program.WriteConsole("Starting SignalR Client...");
var connection = new HubConnectionBuilder()
.ConfigureLogging(logging =>
logging
.AddProvider(new LogProvider(Log.logger, new LogProviderConfiguration
{
Category = LogCategory.SignalR,
Level = LogLevel.Warning
}))
)
.WithUrl(Configuration.GetConnectionString("SignalRInterface"))
.Build();
然后我在配置服务中将服务添加为单例
services.AddSingleton(SignalRClient)
现在的问题是我想使用 redis 作为它的背板,我在将 redis 服务添加到我当前使用 SignalR 的方式时遇到了问题
这样不行
services.AddSingleton(SignalRClient).AddStackExchangeRedis();
根据文档https://docs.microsoft.com/en-us/aspnet/core/signalr/redis-backplane?view=aspnetcore-2.2,它希望您像这样添加它
services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");
但这不适用于我使用 SignalR 的方式。有没有办法让我的实施工作,或者有人对如何解决这个问题有任何建议?
尝试在 ConfigureServices 中添加这个:
services.AddDistributedRedisCache(option =>
{
option.Configuration = Configuration.GetConnectionString(<your_Redis_connection_string>);
});
services.AddSignalR().AddStackExchangeRedis(Configuration.GetConnectionString(<your_Redis_connection_string>));
同时在配置中添加这个
app.UseSignalR(routes =>
{
routes.MapHub<your_Hub>("/yourHub");
});
并且不要忘记在 connectionStrings
中添加 abortConnect=False
你好我有一个应用程序 运行 使用 orleans 和 signalR 我使用 HubConnectionBuilder 像这样初始化我的 SignalRClient
public async Task<HubConnection> InitSignalRCLient()
{
Program.WriteConsole("Starting SignalR Client...");
var connection = new HubConnectionBuilder()
.ConfigureLogging(logging =>
logging
.AddProvider(new LogProvider(Log.logger, new LogProviderConfiguration
{
Category = LogCategory.SignalR,
Level = LogLevel.Warning
}))
)
.WithUrl(Configuration.GetConnectionString("SignalRInterface"))
.Build();
然后我在配置服务中将服务添加为单例
services.AddSingleton(SignalRClient)
现在的问题是我想使用 redis 作为它的背板,我在将 redis 服务添加到我当前使用 SignalR 的方式时遇到了问题 这样不行
services.AddSingleton(SignalRClient).AddStackExchangeRedis();
根据文档https://docs.microsoft.com/en-us/aspnet/core/signalr/redis-backplane?view=aspnetcore-2.2,它希望您像这样添加它
services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");
但这不适用于我使用 SignalR 的方式。有没有办法让我的实施工作,或者有人对如何解决这个问题有任何建议?
尝试在 ConfigureServices 中添加这个:
services.AddDistributedRedisCache(option =>
{
option.Configuration = Configuration.GetConnectionString(<your_Redis_connection_string>);
});
services.AddSignalR().AddStackExchangeRedis(Configuration.GetConnectionString(<your_Redis_connection_string>));
同时在配置中添加这个
app.UseSignalR(routes =>
{
routes.MapHub<your_Hub>("/yourHub");
});
并且不要忘记在 connectionStrings
中添加abortConnect=False