搜索时找不到具体的答案,所以我在这里发布解决方案。
我们与SignalR长期合作良好,然后一些用户开始就收到404错误,并将来自AngularJs / jQuery的调用连接到服务器。协商可以正常工作,并返回200码。
事实证明,默认情况下,服务器端(ASP.NET 4.6.1)必须对URL的大小施加限制,而不是像您期望的那样截断414(请求URI太长),而不是返回它该网址的长度约为2,083,并且仍然尝试对其进行处理。我假设404是SignalR集线器响应,因为现在截断的字符串具有的查询字符串参数与预期的不匹配。之所以看到它,是因为我们通过查询字符串参数传递了两个自定义值和安全访问令牌,从而增加了大小。访问令牌是通过查询字符串传递的,因为我们要使用websocket,而websocket的标头不存在。当您向令牌添加更多属性和角色时,令牌将增长,这使我们超出了默认大小限制。
答案 0 :(得分:0)
修复很容易。只需更新您的服务器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>