.net core OnConnectedAsync未始终使用Azure信号器服务启动

.net core OnConnectedAsync未始终使用Azure信号器服务启动,.net-core,asp.net-core-signalr,azure-signalr,.net Core,Asp.net Core Signalr,Azure Signalr,我有一个.NET Core 2.2 MVC应用程序,它使用Azure Signal服务实时推送来自多个Azure函数的更新数据。跟踪日志显示客户端上按预期工作的所有内容。但是,当连接成功时,后端集线器上的OnConnectedAsync方法仅在大约10%的时间内启动。也就是说,10%的时间OnConnectedAsync发生火灾,一切正常 我已经尝试删除客户端加载的其他JS文件,以查看它们是否干扰了信号器功能,但到目前为止,我什么也找不到 我的简化后端中心代码是: [Authorize] pub

我有一个.NET Core 2.2 MVC应用程序,它使用Azure Signal服务实时推送来自多个Azure函数的更新数据。跟踪日志显示客户端上按预期工作的所有内容。但是,当连接成功时,后端集线器上的OnConnectedAsync方法仅在大约10%的时间内启动。也就是说,10%的时间OnConnectedAsync发生火灾,一切正常

我已经尝试删除客户端加载的其他JS文件,以查看它们是否干扰了信号器功能,但到目前为止,我什么也找不到

我的简化后端中心代码是:

[Authorize]
public class NotificationHub : Hub
{
    public override async Task OnConnectedAsync()
    {
        await base.OnConnectedAsync();
    }

    public override async Task OnDisconnectedAsync(Exception exception)
    {
        await base.OnDisconnectedAsync(exception);
    }
}
Startup类中的ConfigureServices方法包括:

services.AddMvc();
services.AddSignalR(options =>
{
    options.EnableDetailedErrors = true;
}).AddAzureSignalR();
app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});
app.UseAzureSignalR(routes =>
{
    routes.MapHub<NotificationHub>("/notificationhub");
});
启动类中的Configure方法包括:

services.AddMvc();
services.AddSignalR(options =>
{
    options.EnableDetailedErrors = true;
}).AddAzureSignalR();
app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});
app.UseAzureSignalR(routes =>
{
    routes.MapHub<NotificationHub>("/notificationhub");
});
当OnConnectedAsync启动和未启动时,会生成一组类似的服务器端跟踪:

Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request starting HTTP/1.1 POST https://localhost:5001/notificationhub/negotiate text/plain;charset=UTF-8 0
Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:Information: Authorization was successful.
我在跟踪中看到的唯一区别是:

Microsoft.AspNetCore.SignalR.HubConnectionContext:Information: Completed connection handshake. Using HubProtocol 'json'.
成功激发OnConnectedAsync时包括

我已经阅读了所有Azure Signal文档,没有发现我的代码有任何错误


哪种机制只允许客户端/服务器连接在100%的时间内无法完成,即使与Azure Signal服务的连接成功?

这并不是一个确定的答案,因为我仍然不确定根本原因,但是通过创建一个新的Azure Signal服务并切换到该服务,问题得到了解决


在我的研究中,我确实在某个地方读到过,试图通过多个集线器连接到服务可能会导致问题。我不记得具体这么做过,但我可能已经更改了用于绑定到服务的中心名称至少一次。这可能就是服务无法正常工作的原因。不过,从头开始解决了这个问题。

我尝试降级aspnet/signalr@1.1.4到aspnet/signalr@1.1.0以匹配Microsoft.AspNetCore.SignalR 1.1.0,但这没有帮助。