用户尝试使用 Outlook Web Access 访问 Exchange 2007 邮箱时,将收到类似以下内容的错误消息:HTTP 400 错误的请求(请求头太长)
原因
如果符合以下条件,则可能会发生此问题:
Exchange 2007 邮箱服务器角色所在的计算机运行的是 Windows Server 2003,其中包含有多个组成员。例如,该服务器上有 100 个以上安全组。
解决方法
要解决此问题,必须修改以下计算机中的 Internet 信息服务 (IIS) 6.0 相关的三个注册表项:
修改的注册表项
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesw3svcparameters
值名称:MaxClientRequestBuffer
值类型:REG_DWORD
数值数据: 32768
基数:十进制
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesHTTPParameters
值名称:MaxFieldLength
值类型:REG_DWORD
数值数据: 65534
基数:十进制
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesHTTPParameters
值名称: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 登录尝试。