Googlebot会导致.NET System.Web.HttpException

时间:2011-07-07 13:26:53

标签: asp.net exception asp-classic elmah

我有一个与经典asp混合的ASP.NET网站(我们正在转换为.NET),我最近从.NET 1.1升级到.NET 4.0,并在IIS 7中切换到集成管道。

由于这些更改ELMAH报告来自经典asp 页面的错误,实际上没有详细信息(和状态代码404):

System.Web.HttpException (0x80004005)
   at System.Web.CachedPathData.ValidatePath(String physicalPath)
   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

但是当我自己请求页面时,不会发生错误。 ELMAH中出现的所有这些错误都是由Googlebot抓取工具(用户代理字符串)引起的。

为什么.NET会为经典的asp页面选择错误?这与集成管道有关吗?

为什么错误只发生在Google抓取网页或者我如何获取更多细节以查找潜在错误的任何想法?

4 个答案:

答案 0 :(得分:14)

将其添加到您的web.config文件中:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

disables the default check可确保请求的网址符合Windows路径规则。

要重现此问题,请在网址末尾添加%20(网址转义空间),例如: http://example.org/%20。当搜索爬虫遇到带有空格的错误键入的链接时,例如从搜索爬虫中看到这个问题是相当常见的。 <a href="http://example.org/ ">example</a>

HttpContext.Request.Url属性似乎修剪了尾随空格,这就是ELMAH等日志工具不能揭示实际问题的原因。

答案 1 :(得分:1)

答案 2 :(得分:0)

看起来Google抓取工具通过不再存在的链接。 IE可能会在您的网站上有一些文档引用其他文档,但它们会被删除。

我看起来并不严肃,所以你可以考虑过滤掉那个例外。

答案 3 :(得分:0)

这仅适用于您使用Angular的情况,但如果

您将看到此内容
<httpRuntime relaxedUrlToFileSystemMapping="false" /> (as mentioned in the previous answers)

并且在图像或脚本标记上使用src而不是ng-src,即

<img src="{{SomeModelValue}}" />

应该是

<img ng-src="{{SomeModelValue}}" />

这也可能影响使用href而不是ng-href的A标签。