Asp.net mvc 为什么请求在被googlebot爬网时抛出异常,而在我粘贴到URL时却不抛出异常?

Asp.net mvc 为什么请求在被googlebot爬网时抛出异常,而在我粘贴到URL时却不抛出异常?,asp.net-mvc,iis-7,googlebot,Asp.net Mvc,Iis 7,Googlebot,我的事件日志中出现了大量的异常 EVENT ID: 1309 Event code: 3005 Event message: An unhandled exception has occurred. Event time: 12/12/2011 1:40:41 PM Event time (UTC): 12/12/2011 8:40:41 PM Event ID: f85f113a40d349f5a1fe9ef481038281 Event sequence: 8993 Event

我的事件日志中出现了大量的异常

EVENT ID: 1309

Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 12/12/2011 1:40:41 PM 
Event time (UTC): 12/12/2011 8:40:41 PM 
Event ID: f85f113a40d349f5a1fe9ef481038281 
Event sequence: 8993 
Event occurrence: 1463 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/12/ROOT-1-129681577057031250 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\inetpub\wwwroot\gouki\ 
    Machine name: GOUKIPRIME 

Process information: 
    Process ID: 7508 
    Process name: w3wp.exe 
    Account name: IIS APPPOOL\gouki 

Exception information: 
    Exception type: HttpException 
    Exception message: A potentially dangerous Request.Path value was detected from the client (?).
   at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)



Request information: 
    Request URL: http://gouki.com/Story/?page=8&orderby=views&tagged=&subject=&author=?page=10&orderby=views,views,views,&tagged=,,,,,,,,,,,,&subject=,,,,,,,,,,,,,,,,,,&author=,,,,,,,,,,,,,, 
    Request path: /Story/?page=8&orderby=views&tagged=&subject=&author= 
    User host address: 66.249.68.81 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: IIS APPPOOL\gouki 

Thread information: 
    Thread ID: 142 
    Thread account name: IIS APPPOOL\gouki 
    Is impersonating: False 
    Stack trace:    at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)


Custom event details: 

Connection: Keep-alive
Accept: */*
Accept-Encoding: gzip,deflate
From: googlebot(at)googlebot.com
Host: gouki.com
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
我不确定googlebot在哪里发现了格式错误的URL(我已经尝试在我的网站上复制,但没有任何效果),但我更好奇的是,当我自己复制/粘贴URL(继续,尝试)时,我没有收到任何错误,为什么会将此异常记录到事件日志中。是的,由于参数值没有意义,页面有些破损,我可以理解为什么双问号会导致问题,但没有引发异常。我已经尝试将我的用户代理更改为googlebot,但仍然没有看到错误

出于某种原因,Asp.net MVC是第一个?作为路径的一部分,而不是查询字符串的开头,但仅当googlebot请求页面时

这里是否有我在事件日志中没有看到的某种逃逸现象?

看到了吗

请注意:

Request path: /Story/?page=8&orderby=views&tagged=&subject=&author=
服务器认为查询字符串参数是页面名称的一部分,这可能意味着第一个问号实际上是使用
%3f
转义的,但在错误消息中没有这样显示。问号可用作查询字符串的分隔符,但不能作为页面名称的一部分

机器人已经在某个地方获取了URL,可能试图修复它。确保已正确转义URL,即
&
应为
&当URL位于HTML元素的属性中时


如果您的页面中有一个相对链接,如
?page=8&orderby=views&taged=&subject=&author=
,则bot可能会尝试通过将其与当前页面URL组合来创建一个完整的URL,这将解释两组查询字符串。这应该正常工作,但如果URL转义出现问题,可能会把它搞砸。

禁用危险值检测似乎不是一个好主意,但它会阻止事件日志垃圾邮件。您没有任何其他选项。@WildJoe此“潜在危险的查询字符串”检测旨在防止新手开发人员滥用开发工具。正确开发的解决方案(转义用户输入,无XSS和co)将不需要这种预防性保护。禁用它应该是项目中要做的第一件事,因为它会阻止解决方案具有良好的查询字符串。可能与此有关