【发布时间】:2011-06-11 15:13:03
【问题描述】:
我的头发不多,但我正在拔掉剩下的一点。
我的 MVC3 应用程序通过 Action 提供图像,像这样
/Image/ShowImage/25-000252?t=a&o=1
a 是预定义的图像大小,o 是该项目的图像顺序
Image 是控制器,ShowImage 是返回 FilePathResult 的动作。除非 Googlebot 出现,否则所有这些都没有任何问题。然后突然请求验证开始了
A potentially dangerous Request.Path value was detected from the client (?).
如何和为什么都超出了我的理解能力。
ShowImage 动作有 ValidateInput(False),web.config 有 httpRuntime requestValidationMode="2.0" 但似乎没有任何帮助。
【问题讨论】:
-
@vnuk,失败的请求的请求路径是什么?你确定它和你发布的例子一样吗?我之所以问,是因为错误的明显原因是邪恶的 Googlebot 实际上确实请求了一条危险的路径。 :)
-
是的,我确定。这仅适用于 Googlebot-Image/1.0,所有其他页面均由 Googlebot 抓取,没有任何问题
-
@vnuk 奇怪。听起来 Googlebot 正在逃避与号或其他东西,这会触发这种情况。我猜您在按需重现此错误时遇到了麻烦,否则您可以尝试使用allowed characters in the path。
-
我同意。我会将我的图片链接更改为 /Image/ShowImage/25-000252/?t=a&o=1 可能会改变 Googlebot 的行为。但除此之外,我非常绝望......
-
@vnuk 我仍然不相信不同客户端请求的相同路径有时会导致错误。 IIS 是否记录了这些信息的来源?除了用户代理之外,故障请求和工作请求之间没有什么不同吗?