我目前正在一个ASP.NETMVC网站上工作,它工作得很好。但我有一个问题,我不明白在所有...当我启动我的网站上的Visual Studio与Chrome例如没有问题,但当我停止它,并试图启动其他测试与Firefox例如,我的网址正在增长,然后我得到这个错误:HTTP 400。请求标头的大小太长。有人能解释一下为什么会发生这种情况吗?是我的代码有问题还是来自IIS Express或其他什么?先谢了
lawou6xi1#
您可能可以增加Web服务器允许的请求大小。但是,请查看浏览器发送到服务器的Cookie的数量和大小。清除Cookie并重试,看看是否可以减少应用使用的Cookie的大小和数量。越少越好!移动的浏览器可能会遇到这些错误,因为它们不允许与桌面浏览器相同的大小(?)。该错误还可能意味着查询字符串变得太大。
zysjyyx42#
.NET MVC解决方案在我的情况下,这是我的索赔,是倍增我的会话cookie看起来如下在我的浏览器cookie:
.AspNet.ApplicationCookie .AspNet.ApplicationCookieC1 .AspNet.ApplicationCookieC2 .AspNet.ApplicationCookieC3 .AspNet.ApplicationCookieC4 .AspNet.ApplicationCookieC5 .AspNet.ApplicationCookieC6 .AspNet.ApplicationCookieC7 __RequestVerificationToken
我只是简单地转到我的mssql管理工作室中的aspNetUserClaims表并清除它,然后清除项目的浏览器cookie。刷新页面。Kalas!!!完成!!我相信这是因为我从一个数据库连接字符串切换到另一个导致claimsManager重新创建会话并添加到我的cookie。在饱和时,一切都爆炸了。
nnt7mjpx3#
检查MSDN:
原因
当用户是许多Active Directory用户组的成员时,可能会出现此问题。当用户是大量Active Directory组的成员时,用户的Kerberos身份验证令牌的大小会增加。用户发送到IIS服务器的HTTP请求在WWW-Authenticate标头中包含Kerberos令牌。并且标头大小会随着组数的增加而增加。如果HTTP标头或数据包大小增加超过IIS中配置的限制,IIS可能会拒绝请求并发送此错误作为响应。
决议
要解决此问题,请选择下列选项之一:A)减少用户所属的Active Directory组的数量。或B)修改IIS服务器上的MaxFieldLength和MaxRequestBytes注册表设置,以便用户的请求标头不会被认为太长。要确定MaxFieldLength和MaxRequestBytes注册表项的适当设置,请使用以下计算:1.使用以下文章中介绍的公式计算用户的Kerberos令牌的大小:用户属于多个组http://support.microsoft.com/kb/327825时Kerberos身份验证问题的新解决方案1.将IIS服务器上的MaxFieldLength和MaxRequestBytes注册表项的值配置为4/3 * T,其中T是用户的令牌大小(以字节为单位)。HTTP使用base64编码对Kerberos令牌进行编码,因此令牌中每3个字节替换为4个base64编码字节。对注册表所做的更改只有在重新启动HTTP服务后才会生效。此外,您可能必须重新启动任何相关的IIS服务。
nfs0ujit4#
试试这个
<system.web> <httpRuntime maxRequestLength="2097151" executionTimeout="2097151" /> </system.web>
maxRequestLength的默认大小为4096 KB(4 MB)。如果浏览器反复请求某个资源,有时候请求头值长度会成倍增长,所以我们可以尝试将请求长度扩展到最大长度,希望这会有用
hgqdbh6s5#
在windows系统中,通常由于http.sys服务中设置的默认头大小限制而发生此错误。此服务在请求转发到应用程序之前充当保护层,以防止它被无效请求淹没。您可以通过修改windows注册表来覆盖默认的最大标头限制。请按照以下步骤操作:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
资源:
7qhs6swi6#
在我的例子中,我的本地主机上有许多不同应用程序的cookie,这些cookies都很大。FF会根据主机名进行区分,所以从本地主机清除cookie可以解决这个问题。
qvtsj1bj7#
根据Ifeanyi Chukwu的回答,我尝试了隐私模式(Incognito),效果很好。然后我进入浏览器设置并删除我网站的cookie(localhost)。这就解决了问题。
sy5wg1nm8#
由于您可能已经发现了问题,一个简单的临时解决方案是在调试时切换浏览器。
8条答案
按热度按时间lawou6xi1#
您可能可以增加Web服务器允许的请求大小。但是,请查看浏览器发送到服务器的Cookie的数量和大小。清除Cookie并重试,看看是否可以减少应用使用的Cookie的大小和数量。越少越好!移动的浏览器可能会遇到这些错误,因为它们不允许与桌面浏览器相同的大小(?)。
该错误还可能意味着查询字符串变得太大。
zysjyyx42#
.NET MVC解决方案在我的情况下,这是我的索赔,是倍增我的会话cookie看起来如下在我的浏览器cookie:
我只是简单地转到我的mssql管理工作室中的aspNetUserClaims表并清除它,然后清除项目的浏览器cookie。
刷新页面。Kalas!!!完成!!我相信这是因为我从一个数据库连接字符串切换到另一个导致claimsManager重新创建会话并添加到我的cookie。在饱和时,一切都爆炸了。
nnt7mjpx3#
检查MSDN:
原因
当用户是许多Active Directory用户组的成员时,可能会出现此问题。当用户是大量Active Directory组的成员时,用户的Kerberos身份验证令牌的大小会增加。用户发送到IIS服务器的HTTP请求在WWW-Authenticate标头中包含Kerberos令牌。并且标头大小会随着组数的增加而增加。如果HTTP标头或数据包大小增加超过IIS中配置的限制,IIS可能会拒绝请求并发送此错误作为响应。
决议
要解决此问题,请选择下列选项之一:
A)减少用户所属的Active Directory组的数量。
或
B)修改IIS服务器上的MaxFieldLength和MaxRequestBytes注册表设置,以便用户的请求标头不会被认为太长。要确定MaxFieldLength和MaxRequestBytes注册表项的适当设置,请使用以下计算:
1.使用以下文章中介绍的公式计算用户的Kerberos令牌的大小:
用户属于多个组http://support.microsoft.com/kb/327825时Kerberos身份验证问题的新解决方案
1.将IIS服务器上的MaxFieldLength和MaxRequestBytes注册表项的值配置为4/3 * T,其中T是用户的令牌大小(以字节为单位)。HTTP使用base64编码对Kerberos令牌进行编码,因此令牌中每3个字节替换为4个base64编码字节。对注册表所做的更改只有在重新启动HTTP服务后才会生效。此外,您可能必须重新启动任何相关的IIS服务。
nfs0ujit4#
试试这个
maxRequestLength的默认大小为4096 KB(4 MB)。
如果浏览器反复请求某个资源,有时候请求头值长度会成倍增长,所以我们可以尝试将请求长度扩展到最大长度,希望这会有用
hgqdbh6s5#
在windows系统中,通常由于http.sys服务中设置的默认头大小限制而发生此错误。此服务在请求转发到应用程序之前充当保护层,以防止它被无效请求淹没。
您可以通过修改windows注册表来覆盖默认的最大标头限制。
请按照以下步骤操作:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
或手动向下钻取。资源:
7qhs6swi6#
在我的例子中,我的本地主机上有许多不同应用程序的cookie,这些cookies都很大。FF会根据主机名进行区分,所以从本地主机清除cookie可以解决这个问题。
qvtsj1bj7#
根据Ifeanyi Chukwu的回答,我尝试了隐私模式(Incognito),效果很好。然后我进入浏览器设置并删除我网站的cookie(localhost)。这就解决了问题。
sy5wg1nm8#
由于您可能已经发现了问题,一个简单的临时解决方案是在调试时切换浏览器。