Blazor Server应用中如何只为指定Hub配置Azure SignalR Service
解决Blazor Server仅特定Hub使用Azure SignalR的问题
要实现仅让MyHub使用Azure SignalR Service,同时保留Blazor内置UI更新Hub使用本地SignalR,按以下步骤配置即可:
1. 服务注册阶段的精准配置
不要全局将所有Hub绑定到Azure SignalR,而是在注册SignalR时,只为MyHub单独配置Azure SignalR连接:
// 先注册基础SignalR服务 builder.Services.AddSignalR() .AddAzureSignalR(options => { // 仅为MyHub指定Azure SignalR连接字符串 options.Hubs.Add(new HubOptions<MyHub> { ConnectionString = "你的Azure SignalR连接字符串" }); // 其他Hub(包括Blazor内置的/_blazor Hub)默认使用本地SignalR });
2. 终结点正常映射
按常规方式映射自定义Hub和Blazor内置Hub:
app.MapHub<MyHub>("/MyHub"); // Blazor用于UI更新的内置Hub,将使用本地SignalR app.MapBlazorHub();
原理说明
之前直接调用AddSignalR().AddAzureSignalR(connStr)会全局强制所有Hub使用Azure SignalR作为中转,包括Blazor自带的UI更新Hub。而通过HubOptions<MyHub>的配置方式,我们仅为目标Hub绑定Azure SignalR参数,其他Hub会自动回退到本地SignalR的处理逻辑。
内容的提问来源于stack exchange,提问作者jbob77435
相关产品推荐
相关产品推荐

