HTTP错误400:请求 predicate 在IIS 8.5中无效

4uqofj5v  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(182)

我在Windows Server 2012 R2(IIS版本8.5.9600.16384)中托管了ASP NET 4.5应用程序。但偶尔我会收到错误,如错误请求-无效 predicate HTTP错误400。从一个页面转到另一个页面时,请求 predicate 无效。我收到此错误的地方没有特殊序列或特定页面。
httperr日志文件显示如下错误

2015-01-21 04:48:18 MyIP 55452 ServerIP 80 - - - 400 - Verb -
2015-01-21 04:48:20 MYIP 55454 SerevrIP 80 - - - 400 - Verb -

我检查了这个帖子http://support.microsoft.com/kb/828726,但这里它适用于Microsoft Internet信息服务(IIS)6.0。我可以为iis 8.5做这个修补程序吗?我已经在互联网上搜索了这个问题,但没有得到实质性的信息。所以,有人能帮助我解决这个问题吗?
使用Fiddler,我获得了请求的原始数据,如下所示

POST http://example.com/Project.aspx?prj=5566 HTTP/1.1
Host: example.com
Connection: keep-alive
Content-Length: 30634
Cache-Control: max-age=0
Authorization: Negotiate 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://example.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://example.com/Project.aspx?prj=5566
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: ASP.NET_SessionId=4oymd5odmcaluiuzc24tbx22; _gat=1; _ga=GA1.2.1888408676.1418017144

Windows Server 2012 R2的请求筛选设置为

任何帮助都将不胜感激。

vql8enpb

vql8enpb1#

尝试添加

EnableViewState="false"

到您的aspx页面。看起来Chrome在IIS需要请求 predicate 的地方添加了视图状态。
你可能会有一些运气与此:Fix HTTP.sys

f2uvfpb9

f2uvfpb92#

400状态代码

400状态表示“错误请求”。因此这不是服务器端问题。请求有问题。在到达IIS之前格式不正确
如果子状态代码不是0,则更容易排除故障。例如,如果是1,则表示“目标标头无效”。如果是2,则表示“深度标头无效”。下面是full list of status codes
如果您在sc-win32-status中看到值64,则表示存在与网络相关的问题。它指的是“指定的网络名称不再可用”。发送响应后,IIS将等待来自客户端的ACK包。如果客户端重置连接而不是发送此包,IIS将记录64代码,因为这不是正常的连接关闭。
检查HTTPERR日志是否有相同的时间戳。在我的例子中,我看到了Timer_EntityBody错误,这意味着“连接在请求实体主体到达之前过期”。

建议事项

  • 检查服务器上是否安装了杀毒、网络端点保护等软件,卸载后监控一段时间,看是否再次出现问题(注意:有时禁用它们并不意味着它们不再在后台运行。卸载是从故障排除过程中消除它们的最终方法)
  • 请与第三方产品支持人员合作,查看是否存在阻止完全发送请求的问题。应用程序可能正在启动连接,但未完成连接
  • 请与您的网络团队联系,分析Web服务器和客户端之间的网络。理想情况下,网络跟踪将非常有用

来源:Status Code 400 with 64 in sc-win32-status column

相关问题