asp.net - Googlebot 导致 .NET System.Web.HttpException

标签 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 抓取页面时发生,或者我如何获取更多详细信息以找到潜在的错误吗?

最佳答案

将其添加到您的 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/

相关文章:

javascript - 使用 Axios 获取 XML 数据

design-patterns - 使用异常处理身份验证/授权错误是一种好习惯吗?

asp-classic - ASP-打印整个请求内容

mysql - 你如何解决这个错误 : MySQL ODBC Access denied for user 'ODBC' @'localhost' ?

jquery - ASP .Net TextChanged 以显示 Jquery 对话框

c# - 下拉列表中的项目重复

java - 如何区分 Spring Data Jpa 中的 DataAccessException 中的数据库连接失败错误与其他异常

c# vista 不允许访问应用程序数据文件夹

javascript - 如何将值从经典的 asp 传递到 javascript

c# - .NET 6 OpenAPI : How to specify required properties in a POST request class?