asp.net - SignalR 连接并启动导致 404 错误

标签 asp.net signalr

我在搜索时找不到具体的答案,所以我在这里发布我的解决方案。

我们使用 SignalR 工作了很长时间,然后一些用户开始收到 404 错误,并将调用从 AngularJs/jQuery 连接到服务器。协商会正常工作并返回 200 代码。

默认情况下,服务器端 (ASP.NET 4.6.1) 必须对 URL 的大小施加限制,而不是像您可能期望的那样返回 414(请求 URI 太长),它必须截断URL 的长度约为 2,083,但仍会尝试处理它。我假设 404 是 SignalR 集线器响应,因为现在截断的字符串具有与预期不匹配的查询字符串参数。我们看到它是因为我们通过查询字符串参数传递了几个自定义值和安全访问 token ,这增加了大小。访问 token 是通过查询字符串传递的,因为我们想使用 websockets,而 websockets 不存在 header 。当您向 token 添加更多属性和角色时,它会增长,这就是我们超过默认大小限制的原因。

最佳答案

修复很简单。只需更新您的服务器 web.config 以允许更长的 URL。

<system.web>
  <httpRuntime targetFramework="4.5" maxRequestLength="30000000" maxUrlLength="40960" maxQueryStringLength="2097151" />
</system.web>

<system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="30000000" maxUrl="40960" maxQueryString="2097151" />
      </requestFiltering>
    </security>
</system.webServer>

关于asp.net - SignalR 连接并启动导致 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56223453/

相关文章:

javascript - 如何在更新面板 <trigger> 标签内调用/触发 javascript 函数

sql - 基于 SQL 查询将值添加到下拉列表

asp.net-core - IIS下ABP中使用AspNetCore.SignalR时出现连接握手失败错误

c# - SignalR 集线器方法参数序列化

c# - 设计和实现社会关系问题

c# - Apose.Total 找不到许可证文件

c# - 使用 ASP.NET 进行条件 html 呈现

asp.net-web-api - SignalR 响应覆盖 header

asp.net - SignalR OnConnected和OnDisconnected不触发

asp.net-mvc - 设置 SignalR 连接时启动缓慢