Why is my asp.net application throwing ThreadAbortException?自我解释的问题。 即使什么都没错,为什么这东西会冒充我的尝试者呢? 为什么它会在我的日志中显示数百次? 我知道这是一个有关newb的问题,但是如果该网站要获得搜索排名并吸引newb,我们必须问他们 这可能来自Response.Redirect调用。检查此链接以获取说明: http://dotnet.org.za/armand/archive/2004/11/16/7088.aspx (在大多数情况下,调用Response.Redirect(url,false)可解决此问题) ThreadAbortException的最常见原因是调用Response.End,Response.Redirect或Server.Transfer。 Microsoft已发布一些建议的功能,而不是这些功能。 就像其他人所说的那样,它在您调用Response.End()时发生(在您调用Response.Redirect而不传递false作为第二个参数时发生)。这是按设计工作的;通常,如果调用Response.Redirect,则希望立即进行重定向。请参阅此以获取更多信息: Response.Redirect和ThreadAbortException 之所以Response.Redirect会给出此异常,是因为ASP.NET在内部使用Thread.Abort()实现了此API。调用此方法时,将引发特殊的ThreadAbortException。此异常不会被任何catch块吞没。它会在每个catch块的末尾重新抛出。
知道至少有三个内部使用 对于我们而言,此错误开始突然记录下来。发生了什么变化?我们修复了一些处理站点地图的数据库过程中的错误。 log4net日志显示X-Forwarded-For标头(我们位于NLB后面)是Googlebot的IP地址66.249.78.x,这支持了我关于站点地图更改的理论,导致Google更加抓取我们的网站来寻找图像。
首先是要找出为什么只有Googlebot才能够导致此问题。没有其他客户端触发任何使用
因此,在 这让我看到问题是Googlebot使用的是iPhone用户代理字符串,并以此为准,因此我能够在代码库中搜索" iPhone"并提出:
并且使用重定向。 怎么办呢?
好了,对于这个老化的代码库,不值得对所有 我将更改Googlebot移动抓取工具的行为,这不会导致我们的网站向移动设备提供服务的"谎言",因为它只会在第一次点击时重定向,随后会读取Cookie并显示图片。 Googlebot似乎没有缓存该Cookie。
它不是完美的,但是该站点将被重建。可能是由另一个使用Scala或其他工具的团队组成的,因此从实际角度来说,我认为这是一个不错的选择。我将添加评论,以后可能会再次访问该问题,构建一个 为什么Response.Redirect导致System.Threading.ThreadAbortException? 卢克 |