访问 Exchange 2007 邮箱时出现“HTTP 400 错误的请求”错误
上一次修改主题: 2008-10-19
本主题提供有关如何解决 Microsoft Outlook Web Access 用户在大型 Microsoft Exchange Server 2007 环境中可能遇到的错误消息的信息。
用户尝试使用 Outlook Web Access 访问 Exchange 2007 邮箱时,将收到类似以下内容的错误消息:
HTTP 400 错误的请求(请求头太长) |
原因
如果符合以下条件,则可能会发生此问题:
Exchange 2007 邮箱服务器角色所在的计算机运行的是 Windows Server 2003。
该用户是多个组的成员。例如,该用户是 100 个以上安全组的成员。
解决方法
警告: |
---|
UNRESOLVED_TOKEN_VAL(exRegistry) |
要解决此问题,必须修改以下计算机中的 Internet 信息服务 (IIS) 6.0 相关的三个注册表项:
承载 Exchange 2007 客户端访问服务器角色的、基于 Windows Server 2003 的计算机。此计算机承载受影响用户的 Outlook Web Access。
承载 Exchange 2007 邮箱服务器角色的、基于 Windows Server 2003 的计算机。此计算机承载受影响用户的邮箱。
注册表项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters
值名称:MaxClientRequestBuffer
值类型:REG_DWORD
数值数据: 32768
基数:十进制
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
值名称:MaxFieldLength
值类型:REG_DWORD
数值数据: 65534
基数:十进制
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
值名称:MaxRequestBytes
值类型:REG_DWORD
数值数据: 500000
基数:十进制
详细信息
MaxClientRequestBuffer 注册表项限制 HTTP 请求中的响应线路和头信息。 MaxClientRequestBuffer 限制的数据包括从该请求的第一个字节、到实体正文之前的最后一个字节的所有数据。此数据包括方法、URL、任何其他路径信息、查询字符串、 HTTP 版本、 所有头以及分隔请求所有部分的字符。也就是说,它包括所有不属于请求主体部分的数据。
由于 IIS 6.0 将请求数据块读取到缓冲区,因此 MaxClientRequestBuffer 设置的限制可能不确切。因此,设置 MaxClientRequestBuffer 注册表项之后,建议您验证客户端请求中以及头字段中的实际限制是否确实是您所需的限制。
MaxFieldLength 注册表项指定每个 HTTP 请求头的最大大小。
注意: |
---|
默认情况下,此注册表项不存在。 |
MaxRequestBytes 注册表项为请求线路和头的总大小指定上限。通常,此注册表项与 MaxFieldLength 注册表项一起配置。如果 MaxRequestBytes 值小于 MaxFieldLength 值,则调整 MaxFieldLength 值。
客户端访问服务器不会处理那些指定 /exchange 虚拟目录的 Outlook Web Access 登录尝试。相反,它将请求传递到邮箱服务器。但是,客户端访问服务器会处理那些指定 /owa 虚拟目录的 Outlook Web Access 登录尝试。
如果本文中提到的注册表项设置的值不够高,则那些属于多个组成员的用户可能会遇到 Outlook Web Access 登录失败的问题。
有关 MaxClientRequestBuffer 注册表项的详细信息,请参阅 Microsoft 知识库文章 260694 Description of the MaxClientRequestBuffer Registry Value(英文网页)。
有关 MaxFieldLength 注册表项的详细信息,请参阅 IIS 6.0 MaxFieldLength parameter not set correctly(英文网页)。