Joh*_*son 4 redis signalr asp.net-core
您好,我有一个使用 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();
Run Code Online (Sandbox Code Playgroud)
然后我将服务作为单例添加到配置服务中
services.AddSingleton(SignalRClient)
Run Code Online (Sandbox Code Playgroud)
现在的问题是我想使用 Redis 作为背板,并且我在将 Redis 服务添加到我当前使用 SignalR 的方式中时遇到问题,就像这样不起作用
services.AddSingleton(SignalRClient).AddStackExchangeRedis();
Run Code Online (Sandbox Code Playgroud)
根据文档https://learn.microsoft.com/en-us/aspnet/core/signalr/redis-backplane?view=aspnetcore-2.2它希望您添加它
services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");
Run Code Online (Sandbox Code Playgroud)
但这不适用于我使用 SignalR 的方式。无论如何,有没有办法让我的实施发挥作用,或者有人对如何解决这个问题有任何建议?
尝试在ConfigureServices中添加以下内容:
services.AddDistributedRedisCache(option =>
{
option.Configuration = Configuration.GetConnectionString(<your_Redis_connection_string>);
});
services.AddSignalR().AddStackExchangeRedis(Configuration.GetConnectionString(<your_Redis_connection_string>));
Run Code Online (Sandbox Code Playgroud)
还要在配置中添加此内容
app.UseSignalR(routes =>
{
routes.MapHub<your_Hub>("/yourHub");
});
Run Code Online (Sandbox Code Playgroud)
并且不要忘记添加abortConnect=FalseconnectionStrings
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |