SignalR连接和启动导致404错误。

3
在搜索时,我找不到具体的答案,所以在这里发布我的解决方案。
我们长期使用SignalR运作良好,但是某些用户开始在从AngularJs/jQuery到服务器的启动和连接调用时收到404错误。虽然Negotiate正常工作并返回200代码。
事实证明,默认情况下服务器端(ASP.NET 4.6.1)必须对URL大小施加限制,而不是像您可能预期的那样返回414(请求URI过长),它必须在长度约为2083的位置截断URL,并尝试处理它。 我假设404是SignalR中心响应,因为现在截断的字符串具有与预期不符的查询字符串参数。 我们看到这一点,因为我们通过查询字符串参数传递了几个自定义值和安全访问令牌,这增加了大小。 访问令牌通过查询字符串传递,因为我们想要使用WebSockets,并且WebSockets不存在标头。 当您向令牌添加更多属性和角色时,它将增长,这超过了默认大小限制。
1个回答

4
解决方法很简单。只需更新您的服务器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>


这个解决方案对我也有效。不过,查询字符串长度也可以在请求过滤部分的 IIS 级别中指定。 - Ankur Arora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接