【问题标题】:SignalR Core and ASP.NET Core 2.x: getting 404 every 5 seconds on negotiateSignalR Core 和 ASP.NET Core 2.x:协商时每 5 秒获得 404
【发布时间】:2018-09-30 10:54:06
【问题描述】:

我正在使用 SignalR Core 和 ASP.NET Core 2.x。

客户端版本:1.0.3 服务器版本:1.0.3.18207 在 Azure 应用服务上运行。

我收到大量 404 错误,每个登录的用户每 5 秒一次。这是错误:

/signalr/negotiate?clientProtocol=1.5&connectionToken=...

我无法在我的开发环境中重现此错误,它仅在我将其部署到 Azure 应用服务时发生。在我的开发环境中,我也尝试使用捆绑包(将环境设置为生产),但问题没有发生)。

需要指出的重要一点:通知在 DEV 和 PROD 环境中都有效。我没有看到任何功能问题,只是当更多用户登录时这个错误导致系统崩溃。只是一个观察,即使有一个用户登录你也可以看到错误。

编辑:此错误每 5 秒发生一次。我没有更改任何像 KeepAlive 这样的默认配置。

StartUp.ConfigureServices:

            // SignalR
            services
                .AddSignalR()
                .AddJsonProtocol(options =>
                {
                    options.PayloadSerializerSettings.ContractResolver = new DefaultContractResolver();
                });

启动.配置:

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

消息工作正常,但如上所述,我仍然每 5 秒收到 400 错误。

Azure 应用服务应用设置:

【问题讨论】:

  • ?clientProtocol=1.5&connectionToken=... 表示您没有使用 ASP.NET Core SignalR。您确定您使用的是正确的客户端吗?
  • 是的,我使用的是 ASP.NET Core SignalR JavaScript 客户端 1.0.3。在服务器端,我有 Microsoft.AspNetCore.SignalR (1.0.3)。我在问题中添加了屏幕截图。我还添加了一些额外的信息,例如错误每 5 秒发生一次。
  • 好吧,URL 可能是一些不正确的粘贴。 404 通常意味着未启用粘性会话。
  • 再次感谢您的回复。我在一个实例中使用 Azure 应用服务,并且启用了 ARR Affinity cookie。我编辑了我的问题,添加了有关 Azure 应用服务设置和 ASP.NET Core 启动配置的信息。
  • 您能按照本指南github.com/aspnet/SignalR/wiki/Diagnostics-Guide 提供更多信息吗?

标签: asp.net-core asp.net-core-signalr


【解决方案1】:

您使用的是 chrome,是否禁用了 3rd 方 cookie?

【讨论】:

  • 我正在使用 Chrome,但我没有阻止 3rd 方 cookie。
  • 您能否验证 ARR Affinity cookie 是否已在协商响应中设置?您是否曾经能够从客户端获取 HAR 文件
  • 是的,ARR Affinity cookie 已设置。我无法获取 HAR 文件,因为我自己无法重现该问题。我在 Hub 中添加了 [Authorize],现在看来我不再收到 404,这有什么意义吗?
猜你喜欢
  • 1970-01-01
  • 2013-11-23
  • 2018-06-08
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多