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