Signalr连接并启动原因404错误



我在搜索时找不到特定答案,因此我在此处发布解决方案。

我们很长一段时间以来一直在使用SignalR工作,然后一些用户开始在开始时遇到404个错误,并将从Angularjs/jQuery的呼叫连接到服务器。谈判可以正常工作并返回200代码。

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

修复很容易。只需更新您的服务器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>

最新更新