请求标头的大小太长

时间:2016-05-09 09:39:02

标签: asp.net

我目前正在开发一个ASP.NET MVC网站,它运行正常。

但是我有一个我根本不理解的问题...当我在Chrome上使用Chrome启动我的网站时没有问题,但当我停止它并尝试用Firefox启动其他测试时,我的网址正在增长,然后我收到此错误:

  

HTTP 400.请求标头的大小太长。

有人能解释一下为什么会这样吗?它是我的代码还是来自IIS express或其他任何东西?

提前致谢

5 个答案:

答案 0 :(得分:8)

您可以增加网络服务器允许的请求数量。但是,请查看浏览器发送到服务器的cookie的数量和大小。清除您的Cookie并重试,看看您是否可以减少应用使用的Cookie的大小和数量。越少越好!移动浏览器可能会出现这些错误,因为它们不允许与桌面浏览器相同的大小(?)。

错误也可能意味着查询字符串变得太大。

答案 1 :(得分:5)

试试这个

<system.web>
        <httpRuntime maxRequestLength="2097151" executionTimeout="2097151" />
</system.web>

maxRequestLength默认大小为4096 KB(4 MB)。

如果浏览器反复请求某个资源,有时请求标头值长度增加次数,因此我们可能会尝试将请求长度扩展到最大长度。 我希望这可能有用

答案 2 :(得分:2)

检查MSDN

  

<强>原因

     

当用户是许多Active的成员时,可能会发生此问题   目录用户组。当用户是大量的成员时   Active Directory为用户分组Kerberos身份验证令牌   增加规模。用户发送到IIS的HTTP请求   server包含WWW-Authenticate标头中的Kerberos令牌,以及   标题大小随着组数的增加而增加。如果   HTTP标头或数据包大小超过了配置的限制   IIS,IIS可能会拒绝该请求并将此错误作为响应发送。

     

解决

     

要解决此问题,请选择以下选项之一:

     

A)减少用户所在的Active Directory组的数量   成员。

     

OR

     

B)修改MaxFieldLength和MaxRequestBytes注册表设置   在IIS服务器上,因此不会考虑用户的请求标头   长。确定MaxFieldLength的适当设置   和MaxRequestBytes注册表项,使用以下   计算:

     
      
  1. 使用以下文章中描述的公式计算用户的Kerberos令牌的大小:

         

    当用户属于多个组时,Kerberos身份验证问题的新解决方案    http://support.microsoft.com/kb/327825

  2.   
  3. 在IIS服务器上配置值为4/3 * T的MaxFieldLength和MaxRequestBytes注册表项,其中T是用户的令牌   大小,以字节为单位。 HTTP使用base64编码对Kerberos令牌进行编码   因此用4 base64替换令牌中的每3个字节   编码字节。对注册表所做的更改将不会发生   直到重新启动HTTP服务为止。另外,你可能有   重新启动任何相关的IIS服务。

  4.   

答案 3 :(得分:1)

就我而言,我的本地主机上提供了来自多个不同应用程序的Cookie,其中包含大型Cookie。 FF按主机名区分,因此从本地主机清除cookie会解决该问题。

答案 4 :(得分:0)

.NET MVC解决方案 就我而言,正是我的主张使会话cookie倍增,使其在浏览器cookie中看起来如下所示:

.AspNet.ApplicationCookie
.AspNet.ApplicationCookieC1
.AspNet.ApplicationCookieC2
.AspNet.ApplicationCookieC3
.AspNet.ApplicationCookieC4
.AspNet.ApplicationCookieC5
.AspNet.ApplicationCookieC6
.AspNet.ApplicationCookieC7
__RequestVerificationToken

我只是去了mssql管理工作室中的aspNetUserClaims表并清除了它。然后清除该项目的浏览器cookie。

刷新页面。卡拉斯!做完了! 我相信这是因为我从一个数据库连接字符串切换到另一个数据库,这导致ClaimsManager重新创建会话并添加到我的cookie。饱和时,一切都会爆炸。