Asp.net 信号器连接和启动导致404错误

Asp.net 信号器连接和启动导致404错误,asp.net,signalr,Asp.net,Signalr,我在搜索时找不到这个问题的具体答案,所以我在这里发布了我的解决方案 很长一段时间以来,我们一直与SignalR配合良好,然后一些用户开始在开始时收到404个错误,并将AngularJs/jQuery的调用连接到服务器。不过,协商可以正常工作,并返回200代码 事实证明,默认情况下,服务器端(ASP.NET 4.6.1)必须对URL的大小施加限制,而不是像您预期的那样返回414(请求URI太长),它必须将URL截断为2083左右的长度,并仍尝试处理它。我假设404是响应的信号器集线器,因为现在截断

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

很长一段时间以来,我们一直与SignalR配合良好,然后一些用户开始在开始时收到404个错误,并将AngularJs/jQuery的调用连接到服务器。不过,协商可以正常工作,并返回200代码


事实证明,默认情况下,服务器端(ASP.NET 4.6.1)必须对URL的大小施加限制,而不是像您预期的那样返回414(请求URI太长),它必须将URL截断为2083左右的长度,并仍尝试处理它。我假设404是响应的信号器集线器,因为现在截断的字符串具有与预期不匹配的查询字符串参数。我们之所以看到它,是因为我们通过查询字符串参数传递了一些自定义值和安全访问令牌,从而增加了大小。访问令牌是通过查询字符串传递的,因为我们想使用WebSocket,而WebSocket的头不存在。随着您向令牌添加更多属性和角色,它将增长,这使我们超过了默认大小限制。

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


这个解决方案对我也适用。但是,查询字符串长度也可以在“请求筛选”部分下的IIS级别指定。