【发布时间】:2013-09-25 07:06:20
【问题描述】:
我管理一个 .NET 网络表单网站,自从我在这里工作之前就出现了一个奇怪的问题。它时不时地抛出一个System.Web.HttpException: A潜在危险的Request.Path value was detected from the client (:) 错误电子邮件。
错误来自站点内随机页面的随机部分,我注意到的最后一个是针对 CGI script_name 的条目:
SCRIPT_NAME /Scrienu_6 { border-style:none; }.SystemMenu_7 { background-color:
查看页面的渲染代码,看起来一个数据包已被丢弃在响应的头部附近,并且它正在切断脚本标记的 src 部分的末尾,直至通过内联样式块的中途。
<script type="text/javascript" src="../Scripts/DisableTheScreen.js"></script>
<style type="text/css">
.floatingMenu
{
margin-top: 0px;
}
</style>
<link href="../App_Themes/siteTheme/Button.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/ConfirmBox.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/DisableBox.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/Panel.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/ResizableTextBox.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/Site.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/Tabs.css" type="text/css" rel="stylesheet" />
<style type="text/css">
.SystemMenu_0 { background- color:white;visibility:hidden;display:none;position:absolute;left:0px;top:0px; }
.SystemMenu_1 { color:White;font-weight:bold;text-decoration:none; }
.SystemMenu_2 { color:White;font-weight:bold; }
.SystemMenu_3 { }
.SystemMenu_4 { background-color:#004A80; }
.SystemMenu_5 { background-color:#004A80; }
.SystemMenu_6 { border-style:none; }
.SystemMenu_7 { background-color:#004A80; }
所以它最终会从中间切出一个 chnk,例如:
<script type="text/javascript" src="../Scri
enu_6 { border-style:none; }
.SystemMenu_7 { background-color:#004A80; }
过去,我曾见过丢包对图像和未加载的 CSS 文件做有趣的事情,但我从未见过它们会从渲染的页面内容中切出部分内容。我已经用谷歌搜索了很多问题,但没有找到类似的东西,所以不确定我是否在寻找正确的问题。
在过去 5 个月中,该问题仅在一个使用率相当高的系统上触发了 22 次,但它的发生频率可能比这更频繁,因为我们只会在对服务器的回调被认为是字符的情况下才会看到错误请求验证器不安全。
是的,只是想知道是否有人对我可以做什么或寻找解决这个问题有任何想法? :)
在 IIS7/Win2k8 中观察到此行为。据报道,它也在 IIS8/Win2k12 和 IIS8/Win8.1 中被观察到。我在 IIS6/Win2k3 中没有看到这方面的证据。我的两个不同客户最后一次报告它是在 2013 年 11 月左右。这两个服务器环境都没有安装 VisualStudio。 .NET Framework 2.0、3.5 和 4.5[1?] 都安装在两个服务器环境中。
我已向两位客户索取日志和完整规格,其中一位已回复并确认问题不再发生。因此,我怀疑来自 Msft 的更新或修补程序解决了它,它与网络相关并且已经解决,或者 Cthulhu 决定折磨其他人。另一位客户尚未回应。
除了 OP 和这些客户之外,肯定还有其他人看到了这种行为吗?如果可能的话,最好找到一个明确的答案并将这个问题与已知的修复联系起来。 (你得到一个甜蜜的 200 分......耶!)
【问题讨论】:
-
不确定这是否与您的情况有关,但可以在 link 找到类似问题的报告
-
啊,谢谢吉姆,看起来确实很相似,从 VS2010 到 2012 的更改可能会产生一些影响。不过,我们在任何开发盒上都没有遇到这个问题,只是在我们的 IIS 7 生产服务器上。我无法尝试该帖子中的任何建议更改,因为我们现在处于更改冻结状态,但该网站正在为 MVC 重建,因此希望在我们的下一个版本中解决。
-
问题的核心是丢失了整个 HTTP 响应块。更改内容是无关紧要的,因为它可以在大多数环境中使用完全相同的代码和内容。
-
我讨厌指出明显的问题,但如果没有更多证据就无法解释问题;你会得到什么只是猜测。你有没有看过这个其他的 SO 链接:What can cause TCP/IP to drop packets without dropping the connection?
-
你发这个很有趣,我的一个同事也有类似的问题。在 IIS 中打开压缩可以修复它,但我们不确定它为什么会起作用。看看它是否适合你?