2011-06-11 41 views
7

我没有很多头发,但我拉出它剩下的一点点。请求验证问题只适用于Googlebot

我MVC3应用经由动作用于图像像这样

/Image/ShowImage/25-000252?t=a&o=1 

被预定义的图像大小,o是该项目

图片图像顺序控制器,ShowImage是动作返回FilePathResult。除非Googlebot出现,否则所有这些工作都没有任何问题。然后所有的突然请求验证踢

A potentially dangerous Request.Path value was detected from the client (?). 

如何和为什么都超出我的理解能力。

ShowImage action has ValidateInput(False),web.config has httpRuntime requestValidationMode =“2.0”但似乎没有任何帮助。

+1

@vnuk解决,什么是失败请求的请求的路径?你确定它就像你发布的例子吗?我在问,因为这个错误的明显原因是,邪恶的Googlebot实际上确实需要一个危险的路径。 :) – bzlm 2011-06-11 15:17:19

+0

是的,我敢肯定。这只发生在Googlebot-Image/1.0,所有其他页面都被Googlebot抓取而没有任何问题 – Vnuk 2011-06-11 15:21:17

+1

@vnuk奇怪。这听起来像Googlebot逃避了&符或什么,这将触发这一点。我猜你在按需复制这个错误时遇到了麻烦,否则你可以尝试使用[允许的字符在路径中](http://msdn.microsoft.com/en-us/library/system.web.configuration .httpruntimesection.requestpathinvalidcharacters.aspx)。 – bzlm 2011-06-11 15:26:04

回答

1

打开应用程序的跟踪或安装elmah或查看iis的日志以查看返回500状态码的路径。那么应该清楚需要改变的是什么。

+0

没想到跟踪,会试一试。 – Vnuk 2011-06-11 16:54:13

+0

不elmah给你的网址?如果你想解决这个问题(我强烈建议你尽量保留这些内置保护)解决方案被描述为删除无效路径字符:http://www.christophercrooker.com/use-any-characters-you-想在你的网址与aspnet-4和iis注意 - 这不只是正常的请求验证。这正在改变路径中允许的字符。正常的请求验证还涉及到对ex的检查。 2011-06-11 20:19:16

+0

/Image/ShowImage/25-000252?t = a&o = 1是URL(我剥去了http部分)现在看起来像我的改变(加/)已经成功了。避风港现在看到“危险的Request.Path”12小时,希望它保持这种方式:) – Vnuk 2011-06-12 07:35:22