我的一些用户在请求我的网站的某些页面时有时会收到以下错误: 错误请求 - 请求太长HTTP错误400.请求标头的大小太长
似乎只在Firefox中发生。
删除用户Cookie确实有帮助。
我不明白的是:我认为每个请求都附加了cookie。为什么我的页面中只有一两个显示此错误,大部分都没有?
它也不依赖于服务器页面。如果用户请求 http://example.com/user/Myname 他可能会得到错误。 如果他只是更改了URL的大写,那么它再次起作用(如http://example.com/user/myname)。 (我正在运行IIS,它不太关心大小写)。
对于浏览器,两个URL是不同的,对于服务器它们不是。
知道发生了什么事吗?
答案 0 :(得分:29)
毕竟看起来饼干太多了。我确信没有那么多它现在正在运作。
答案 1 :(得分:18)
我们的一些用户也在IE 8上遇到了一些我们在IIS中托管的内部网站点的异常。该问题与使用Kerberos身份验证有关,其中用户属于许多活动目录组。
我们从以下Microsoft支持文章中找到了解决方案:
我们的修复是使用增加的值设置以下注册表项和/或如果它们不存在则创建它们:
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ HTTP \ Parameters]“MaxFieldLength”= dword:00007d00“MaxRequestBytes”= dword:0085ee00
答案 2 :(得分:8)
解决方案1
从浏览器中删除所有域Cookie
在Firefox 53中
在Chrome中 检查this superuser solution
解决方案2
答案 3 :(得分:8)
问题是由于cookie已损坏。简单的解决方案是删除所有cookie,但这是解决该特定问题的最佳方法,我已经为Firefox,Chrome和Internet Explorer创建了一个自定义指南。见这里:http://timourrashed.com/how-to-fix-the-400-bad-request-error-message-from-a-website/
答案 4 :(得分:1)
此错误的另一个原因是用户位于过多的 Active Directory 组中。更现代的 SSRS 版本没有这个问题。
似乎 AD 组列表是在 HTTP 标头中传递的。旧版本的 SQL Server Reporting Services 有标头大小限制。因此,如果用户位于过多的组中,最简单的解决方法是删除不需要的组。
如果删除组不是一个选项,您应该能够编辑 web.config 文件并增加限制。你可以在这里看到如何做到这一点...... https://www.mssqltips.com/sqlservertip/4688/resolving-the-maximum-request-length-exceeded-exception-in-sql-server-reporting-services/
答案 5 :(得分:-1)
我使用了 ViewData 而不是 TempData ,问题已解决。