我有一个 ASP.Net 4.0应用程序,在Windows 2003上的IIS7.5上使用Windows集成身份验证。
某些用户报告以下消息的错误:
错误请求 - 请求时间过长
HTTP 错误 400。请求标头的大小太长。
其他人成功加载页面,但在加载其他资源和执行 AJAX 调用时出错。
遇到间歇性错误的用户之一具有大约 5700 个字符的 Kerberos 授权标头。此用户是 250 个 AD 组的成员。我的理论是,其他HTTP标头(包括cookie)的总数可能会超过8000个字符,如果使用UTF16编码,则总数超过默认的16KB限制。
本页介绍如何使用 web.config 配置每个 HTTP 标头的限制:http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits/headerlimits
本页介绍如何使用注册表设置来设置 HTTP 标头大小和总请求大小的限制,默认情况下均为 16KB:https://support.microsoft.com/en-us/kb/820129
- web.config 设置是否会覆盖 HTTP.sys 注册表设置?
- 如果是这样,是否有针对总请求大小的 web.config 设置?
- 注册表具有高优先级,因为驱动程序是数据包的入口点。它也是所有传入 HTTP 数据包的服务器范围设置。
请求筛选设置仅在数据包转发到 IIS 管道时生效。它可以在多个级别进行设置,以实现细粒度控制。
- 似乎没有设置。
您是否尝试过在浏览器中清除 cookie?
您可能存储了过多的 cookie,这些 cookie 将被添加到浏览器中发出的任何和所有请求中。这有时会导致这样的问题。此外,您可以尝试在不同的浏览器中运行应用程序,看看这是否会影响任何内容。