关于Response.redirect和Response.End出现线程中止异常的处理
来源:互联网 发布:大学数据库考试题库 编辑:程序博客网 时间:2024/05/21 07:50
前段时间做的项目在部署到应用服务器上之后,有很多用户IE会出现.NET的“大红界面”,查看Log日志,上面写到:
2003-9-28 17:27:51 481 线程正被中止。
2003-9-28 17:27:51 481 at System.Threading.Thread.AbortInternal()
at System.Threading.Thread.Abort()
at System.Threading.Thread.Abort(Object stateInfo)
at System.Web.HttpResponse.End()
原因很明了,偶在调用response.end的时候被Abort,异常直接抛出来了
后来在微软的Support里面查到相关资料,不过微软在给出问题出错原因时显得很搞笑:
解释是: 这种现象是设计使然。
好了,返回正题,关于这种情况大家肯定会经常用到,不过微软给出的解决方案还是不错的,以下是链接的微软网站的内容。偶可没有侵权的意思~:)
症状
如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,则出现 ThreadAbortException 异常。 可使用 try-catch 语句捕捉此异常。
原因
Response.End 方法停止页的执行,并将该执行变换到应用程序的事件管线中的 Application_EndRequest 事件。 Response.End 后面的代码行将不执行。
此问题出现在 Response.Redirect 和 Server.Transfer 方法中,这是由于这两种方法都在内部调用 Response.End。
解决方案
若要解决此问题,请使用下列方法之一:
对于 Response.End,调用 ApplicationInstance.CompleteRequest 方法而不调用 Response.End,以便跳过 Application_EndRequest事件的代码执行。
对于 Response.Redirect,使用重载 Response.Redirect(String url, bool endResponse),对 endResponse 参数它传递 false以取消对 Response.End 的内部调用。例如:
Response.Redirect ("nextpage.aspx", false);
如果使用这种解决方法,Response.Redirect 后面的代码将得到执行。
对于 Server.Transfer,请改用 Server.Execute 方法。
状态
这种现象是设计使然。
这篇文章中的信息适用于:
Microsoft ASP .NET(包含在 .NET 框架中)
最近更新: 2002-1-17 (1.0)
关键字 kbDSupport kberror kbExceptHandling kbGrpDSASP kbprb kbWebForms KB312629
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的或衍生性的损失或任何种类的损失,均不负任何责任,无论该等诉讼是合同之诉、疏忽或其它侵权行为之诉。
- 关于Response.redirect和Response.End出现线程中止异常的处理
- 关于Response.redirect和Response.End出现线程中止异常的处理
- 关于Response.redirect和Response.End出现线程中止异常的处理
- 关于Response.redirect和Response.End出现线程中止异常的处理
- 关于Response.redirect和Response.End出现线程中止异常的处理
- 关于Response.redirect和Response.End出现线程中止异常的处理
- 关于Response.redirect和Response.End出现线程中止异常的处理
- 关于Response.redirect和Response.End出现线程中止异常的处理
- Response.End导致“正在中止线程”异常的问题
- Response.End导致“正在中止线程”异常的问题
- Response.Redirect 产生的“正在中止线程(執行緒中止)”错误
- Response.End正在中止线程
- response.end() 正在中止线程
- Response.Redirect 与 异常(线程正在中止)
- Response.Redirect 产生的“正在中止线程”错误
- Response.Redirect 产生的“正在中止线程”错误
- 如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常
- 关于alert和Response.redirect()
- 使用自定义验证控件(RegularExpressionValidator)
- Hibernate之查询效率问题(转)
- 我的.emacs配置
- 云计算
- 通过命令将 FAT32 装 NTFS
- 关于Response.redirect和Response.End出现线程中止异常的处理
- [经典]雷达系统分析与建模(D.K.Barton)
- 用于运行 ASP.NET 的进程帐户必须具有对 IIS 元数据库(如 IIS://servername/W3SVC)的读访问权。
- NET环境下几种不同的邮件发送解决方案
- C# WEB开发的几个问题的解决
- ThreadLocal使用 --用于保存每个登录用户的信息-userInfo
- 按钮提交表单
- iframe的Document属性与Document属性(Dhtml 一字之差)
- 子类化CStaic,设置背景颜色