Googlebot会导致.NET System.Web.HttpException

14 asp.net elmah exception asp-classic

我有一个ASP.NET网站与经典asp混合(我们正在转换到.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)
Run Code Online (Sandbox Code Playgroud)

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

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

任何想法为什么只有当Google抓取页面时才会发生错误,或者我如何获取更多详细信息以查找潜在的错误?

Luk*_*son 14

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

<httpRuntime relaxedUrlToFileSystemMapping="true" />
Run Code Online (Sandbox Code Playgroud)

将禁用默认检查以确保请求的URL符合Windows路径规则.

要重现该问题,请将%20(URL转义空间)添加到URL的末尾,例如http://example.org/%20.当搜索爬虫遇到带有空格的错误类型链接时,这种问题很常见,例如<a href="http://example.org/ ">example</a>.

HttpContext.Request.Url属性似乎削减了尾随空间,这就是ELMAH等日志工具没有揭示实际问题的原因.


Ale*_*sky 0

看起来 Google 抓取工具正在浏览不再存在的链接。IE 您网站上的某些文档可能引用了其他文档,但它们已被删除。

我看起来并不认真,所以你可能会考虑过滤掉这个例外。