Py学习  »  Redis

将signaler服务添加为singleton,然后将redis添加到其中

Johan Jönsson • 4 年前 • 665 次点击  

你好,我有一个使用奥尔良和signaler启动并运行的应用程序,我使用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();

然后我将服务添加为configure服务中的singleton

services.AddSingleton(SignalRClient)

现在的问题是,我想使用redis作为这方面的背板,我在将redis服务添加到我当前使用signaler的方式时遇到了问题。 好像这样不行

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>");

但这和我使用信号器的方式不一样。有没有办法让我的执行工作,或者有人得到了任何关于如何解决这个问题的建议?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43447
 
665 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Melianessa
Reply   •   1 楼
Melianessa    5 年前

尝试在configureservices中添加以下内容:

services.AddDistributedRedisCache(option =>
  {
      option.Configuration = Configuration.GetConnectionString(<your_Redis_connection_string>);
  });

services.AddSignalR().AddStackExchangeRedis(Configuration.GetConnectionString(<your_Redis_connection_string>));

在configure中也添加这个

app.UseSignalR(routes =>
  {
     routes.MapHub<your_Hub>("/yourHub");
  });

别忘了加上 abortConnect=False 在连接字符串中