.net 2.0的URL重写导致搜索引擎302重定向错误的Bug及其解决方法-完美版-小事一箩筐
2008-11-04 16:47
363 查看
最近在服务器的日志中出现许多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”这样的网址收录。验证一下。
现在把方法公布出来,是希望有相同问题的朋友能够迅速解决问题,让我们一起共建美好的网络家园。
转帖请著名来源:小事一箩筐 版权所有
参考文章
Url重写 与 google yahoo 蜘蛛(3)
扩展 Request.Browser.crawler 支持的searching engine
.net 2.0的URL重写导致的Bug及其解决方法
小事一箩筐,让你笑翻了^_^
事件类型: 警告
事件来源: 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”这样的网址收录。验证一下。
现在把方法公布出来,是希望有相同问题的朋友能够迅速解决问题,让我们一起共建美好的网络家园。
转帖请著名来源:小事一箩筐 版权所有
参考文章
Url重写 与 google yahoo 蜘蛛(3)
扩展 Request.Browser.crawler 支持的searching engine
.net 2.0的URL重写导致的Bug及其解决方法
小事一箩筐,让你笑翻了^_^
相关文章推荐
- .net 2.0的URL重写导致的Bug及其解决方法
- IIS和.NET(1.1/2.0)的安装顺序及错误解决方法
- .NET 2.0项目常用错误的解决方法
- 由于SSH配置文件的错误,导致的Permission denied (publickey)及其解决方法
- Ubuntu设置环境变量错误导致系统无法登录解决方法
- PHP中对于错误信息的提示配置及其含义和解决错误的方法
- IE6中用了float:left之后导致margin-left双倍边距的BUG解决方法
- odoo中pos模块由于删除partner导致发生(你试图访问的单据已经删除)错误的解决方法
- jquery formValidator插件ajax验证,在内容不做修改的前提下提示错误的bug解决方法
- IIS和.NET的安装顺序及错误解决方法
- Grails HTTP response codes mapping(默认错误页面)bug的解决方法
- uboot无法引导uImage错误及其解决方法
- springmvc项目搭建过程中遇到的BUG及其解决方法
- Silverlight 2 : 关于ListBox的一个Layout Bug及其解决方法
- mcp2515 芯片驱动总线错误BUG的解决方法(主要无法进入中断bug)
- .NET 2.0 转4.0 执行SqlLite操作时报错的解决方法
- 关于Angular2.0 in-memory-web-api的GET http://localhost:3000/traceur 404 (Not Found)等错误的解决方法之一
- 项目总结---- imageLoder 的2个Bug解决方法、1.9.4如何选择性删除disk缓存和其它一些错误。
- eclipse上一次没有正确关闭,导致启动的时候卡死错误解决方法