【发布时间】: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