.net 2.0的URL重写导致搜索引擎302重定向错误的Bug及其解决方法-完美版-小事一箩筐
来源:互联网 发布:youtube download mac 编辑:程序博客网 时间:2024/06/01 08:17
最近在服务器的日志中出现许多Web事件的警告信息。时间间隔非常规律,一分钟出现一至两次,其错误信息摘取关键部分如下:
事件类型: 警告
事件来源: ASP.NET 2.0.50727.0
事件种类: Web 事件
事件 ID: 1309
日期: 2008-1-13
事件: 14:43:41
用户: N/A
描述:
事件代码: 3005
事件消息: 发生了未处理的异常。
事件时间: 2008-1-13 14:43:41
事件时间(UTC): 2008-1-13 6:43:41
事件 ID: f94c4a45b696449db6df2a3d571059e3
事件序列: 110527
事件匹配项: 9121
事件详细信息代码: 0
异常信息:
异常类型: HttpException
异常消息: 无法使用前导 .. 在顶级目录上退出。
请求信息:
请求 URL: http://www.xiaoshiyiluokuang.com/articles/all/9feb25b247ef405abfc5d96c9b670bcc
请求路径: /articles/all/9feb25b247ef405abfc5d96c9b670bcc
用户主机地址: 66.249.66.38
用户:
是否已经过身份验证: False
身份验证类型:
线程帐户名: NT AUTHORITY/NETWORK SERVICE
线程信息:
线程 ID: 1
线程帐户名: NT AUTHORITY/NETWORK SERVICE
是否正在模拟: False
堆栈跟踪: 在 System.Web.Util.UrlPath.ReduceVirtualPath(String path)
在 System.Web.Util.UrlPath.Reduce(String path)
在 System.Web.Util.UrlPath.Combine(String appPath, String basepath, String relative)
在 System.Web.HttpResponse.ApplyAppPathModifier(String virtualPath)
在 System.Web.UI.HtmlControls.HtmlForm.GetActionAttribute()
在 System.Web.UI.HtmlControls.HtmlForm.RenderAttributes(HtmlTextWriter writer)
在 System.Web.UI.HtmlControls.HtmlControl.RenderBeginTag(HtmlTextWriter writer)
在 System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output)
在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
在 System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer)
在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
在 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
在 System.Web.UI.Page.Render(HtmlTextWriter writer)
在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
最初以为是源代码中的问题,打开源码仔细分析没有找到逻辑上的错误,不得其解。查找主机的IP地址,发现居然是GoogleBot 搜寻引擎机器人,后来在网上看到一篇文章,Get GoogleBot to crash your .NET 2.0 site
才知道这是由于ASP.NET 2.0 本身的一个bug造成的。
在网上搜索到好多解决方法,但是都不能最终完美解决。最后综合了几种方法之后找到一个行之有效的解决方法:
其实就是在web.config的system.web这个节点下面加上下面的就可以了
<browserCaps>
<filter>
<!-- SEARCH ENGINES GROUP -->
<!-- check Google (Yahoo uses this as well) -->
<case match="^Googlebot(/-Image)?/(?'version'(?'major'/d+)(?'minor'/./d+)).*">
browser=Google
version=${version}
majorversion=${major}
minorversion=${minor}
crawler=true
</case>
<!-- check Google -->
<case match="Googlebot">
browser=Googlebot
crawler=true
</case>
<!-- check Alta Vista (Scooter) -->
<case match="^Scooter(/|-)(?'version'(?'major'/d+)(?'minor'/./d+)).*">
browser=AltaVista
version=${version}
majorversion=${major}
minorversion=${minor}
crawler=true
</case>
<!-- check Alta Vista (Mercator) -->
<case match="Mercator">
browser=AltaVista
crawler=true
</case>
<!-- check Slurp (Yahoo uses this as well) -->
<case match="Slurp">
browser=Slurp
crawler=true
</case>
<!-- check MSN -->
<case match="MSNBOT">
browser=MSN
crawler=true
</case>
<!-- check Northern Light -->
<case match="^Gulliver/(?'version'(?'major'/d+)(?'minor'/./d+)).*">
browser=NorthernLight
version=${version}
majorversion=${major}
minorversion=${minor}
crawler=true
</case>
<!-- check Excite -->
<case match="ArchitextSpider">
browser=Excite
crawler=true
</case>
<!-- Lycos -->
<case match="Lycos_Spider">
browser=Lycos
crawler=true
</case>
<!-- Ask Jeeves -->
<case match="Ask Jeeves">
browser=AskJeaves
crawler=true
</case>
<!-- check Fast -->
<case match="^FAST-WebCrawler/(?'version'(?'major'/d+)(?'minor'/./d+)).*">
browser=Fast
version=${version}
majorversion=${major}
minorversion=${minor}
crawler=true
</case>
<!-- IBM Research Web Crawler -->
<case match="http/:////www/.almaden.ibm.com//cs//crawler">
browser=IBMResearchWebCrawler
crawler=true
</case>
</filter>
frames=true
tables=true
cookies=true
javascript=true
javaapplets=true
ecmascriptversion=1.5
w3cdomversion=1.0
css1=true
css2=true
xml=true
tagwriter=System.Web.UI.HtmlTextWriter
</browserCaps>
注意,上面的这些不要动,基本上放在web.config的system.web节点下面就可以!~
大家可以去我的小站试试,看看效果,另外就是去google或者雅虎看看有没有类似“http://www.xiaoshiyiluokuang.com/articles/all/9feb25b247ef405abfc5d96c9b670bcc”这样的网址收录。验证一下。
现在把方法公布出来,是希望有相同问题的朋友能够迅速解决问题,让我们一起共建美好的网络家园。
转帖请著名来源:小事一箩筐 版权所有
参考文章
扩展 Request.Browser.crawler 支持的searching engine
- .net 2.0的URL重写导致搜索引擎302重定向错误的Bug及其解决方法-完美版-小事一箩筐
- .net 2.0的URL重写导致的Bug及其解决方法
- 小事一箩筐
- 302重定向导致网址URL劫持
- Apache URL重写的配置 及其 apache500错误
- Apache URL重写的配置 及其 apache500错误
- url重写就是url重定向
- 【网页】重定向和搜索引擎的关系
- 重构 Eclipse Web项目导致的错误及解决方法
- servlet的重定向错误
- iis7 url重写和重定向
- 类型错误导致的bug
- 天涯上很黄很暴力的幽默回复,我看完笑了1个小时 - 小事一箩筐,全国最大的生活小事分享平台
- 发现一个iis 重定向的bug
- Webx RPC 内部重定向的bug
- asp.net的网址重定向方法的比较:面向搜索引擎友好
- ASP.net的URL重写
- ASP.net的url重写
- net基础题(1)
- 谷歌雅虎向司法部妥协 修改搜索广告协议
- List和ArrayList的区别
- arcsde 与 oracle不在同一服务器上的安装方法
- JS 判断是页面是刷新还是关闭
- .net 2.0的URL重写导致搜索引擎302重定向错误的Bug及其解决方法-完美版-小事一箩筐
- 生成连续流水号的方法介绍
- 多表操作
- WSSF:ME - how to consume a service
- JAVA连接数据库大全
- imp oracle dump file
- 随笔!
- 如何通过Web方式把服务器端的数据库备份到本地的电脑硬盘中?
- 正则表达式