我目前正在尝试在我的 Blazor 应用中使用 Azure SignalR,但目前遇到了看起来像身份验证错误的困难。
我已经在我的Program.cs
文件中设置了它以包含Azure SignalR:
builder.Services.AddSignalR().AddAzureSignalR();
然后,我将连接字符串添加到appsettings.json
中,该字符串经过验证,因为在运行应用程序时收到以下消息:
集线器现在已连接到"(主)xxx.service.signalr.net")
我已经在我的Program.cs
中映射了我的中心。
app.MapHub<MessageHub>('/messagehub');
但是,当我尝试连接到集线器时,我遇到以下问题:
收到的协商响应无效。
我相信这是我在我的应用程序中进行身份验证,并且由于未经身份验证的错误而产生此错误。
但是,如何向 Azure 进行身份验证并使用该中心?
我已经按照MSDOC在Blazor App中使用AzureSignalR服务。
我希望你也遵循同样的方式。如果没有,请按照以下解决方法操作 在应用程序中使用最新的Microsoft.Azure.SignalR包 我已在appsettings.json
文件中添加了 azureSignalR的连接字符串
"Azure": {
"SignalR": {
"Enabled": true,
"ConnectionString": "<SignalR Connection String>"
}
},
# use ServerStickyMode to avoid Inconsistent UI state management. If you are using many servers
"Azure:SignalR:ServerStickyMode": "Required"
我正在使用端点来映射中心。
app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/Fallback page");
endpoints.MapHub<YourHub>('/YourHub');
});
在配置服务中添加Azure SignalR服务
public void ConfigureServices(IServiceCollection services) {
services.AddSignalR().AddAzureSignalR();
...
}
配置这些后,您可以对中心进行身份验证。
如果仍然遇到问题,请在配置服务中添加以下代码行以了解详细错误。
services.AddSignalR(
s =>
{
s.EnableDetailedErrors = true;
});
有关类似问题,请参阅 SO 线程