如何在多租户应用程序中定义 signalR MapHub 路由

Kum*_*hir 5 signalr asp.net-core-signalr

SignalR ChatHub 被定义为控制器。

[Route("{tenantName}/chatHub")]
public class ChatHub: Hub
Run Code Online (Sandbox Code Playgroud)

在启动配置方法中,

app.UseSignalR(routes =>
{
 routes.MapHub<MessageHub>("/dev/chatHub");
});
Run Code Online (Sandbox Code Playgroud)

这在开发环境中运行良好。

我的问题是,如何定义 useSignalR 方法,以便 mapHub 路径独立于租户,或者有不同的定义方式以便适用于所有租户$"/{tenant}/chatHub"

Kum*_*hir 3

我通过以下方式处理了这个问题;创建了 chatHub 控制器,没有像这样的租户

[Route("/chatHub")]
public class ChatHub: Hub
Run Code Online (Sandbox Code Playgroud)

并在startup.cs中定义为

app.UseSignalR(routes =>
 {
     routes.MapHub<ChatHub>("/chatHub");
 });
Run Code Online (Sandbox Code Playgroud)

因此,这种公共实例可以处理所有租户调用并通过方法参数识别租户,例如

公共异步任务SendMessage(字符串租户,字符串消息){...}