【发布时间】:2020-05-23 10:04:39
【问题描述】:
我们创建了一个使用 Windows 身份验证的 ASP.NET MVC 应用程序。我们现在遇到的问题是,我们有一些用户在访问该站点时收到以下错误消息:
HTTP 错误 400。请求标头的大小太长。
这似乎是因为用户在过多的 Active Directory 组中。
我已经做了以下事情:
我在运行 Web 应用程序的服务器上添加了以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\MaxFieldLength ==> 65536
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\MaxRequestBytes ==> 16777216
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lsa\Parameters\MaxTokenSize ==> 65535
我还在访问 Web 应用程序的客户端计算机上设置了以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lsa\Parameters\MaxTokenSize ==> 65535
然后我重新启动了所有计算机并尝试再次访问 Web 应用程序。我仍然收到上述错误消息。
有人知道我能做什么吗? 我该如何进一步调试和分析这个问题?
【问题讨论】:
-
首先,你有没有监控400的响应服务器是http api/2.0还是IIS?它会告诉我们应该关注哪一层。如果响应服务器是http api,那么你应该关注registry。否则,您应该专注于 IIS 配置并承诺应用程序池已被回收。
-
响应来自http api/2.0
-
如果是这样,应该从 http.sys 而不是 IIS 返回错误。修改注册表项应该可以工作,这很奇怪。如果你想进一步挖掘。使用docs.microsoft.com/zh-cn/archive/blogs/wndp/…捕获etl并分析http.sys日志
-
此外,您是否监控过您的请求标头是否仍然超过配置的大小。
标签: asp.net-mvc iis kerberos request-headers