我有一个与经典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抓取网页或者我如何获取更多细节以查找潜在错误的任何想法?
答案 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标签。