我有一个与经典 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 抓取页面时发生,或者我如何获取更多详细信息以找到潜在的错误吗?
最佳答案
将其添加到您的 web.config 文件中:
<httpRuntime relaxedUrlToFileSystemMapping="true" />
这个disables the default check确保请求的 URL 符合 Windows 路径规则。
要重现该问题,请添加 %20
(URL 转义空格)到 URL 的末尾,例如http://example.org/%20
。当搜索爬虫遇到错误输入的带有空格的链接时,例如“<a href="http://example.org/ ">example</a>
.
HttpContext.Request.Url
属性似乎会修剪尾随空格,这就是为什么像 ELMAH 这样的日志记录工具不会揭示实际问题。
关于asp.net - Googlebot 导致 .NET System.Web.HttpException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611332/