我有一个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)
但是当我自己请求页面时,不会发生错误.所有出现在ELMAH中的错误都是由Googlebot抓取工具(用户代理字符串)引起的.
解决方法
将其添加到您的web.config文件中:
<httpRuntime relaxedUrlToFileSystemMapping="true" />
此disables the default check确保所请求的URL符合Windows路径规则.
要重现问题,请将(URL转义的空格)添加到URL的末尾,例如http://example.org/.当搜索抓取工具遇到带有空格的错误类型的链接时,这是很常见的. < a href =“http://example.org/”>示例< / a> ;. HttpContext.Request.Url属性似乎修剪了尾随空间,这就是为什么像ELMAH这样的日志记录工具不会揭示实际的问题.