欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Response.Redirect 正在中止线程解决方案

程序员文章站 2023-11-21 11:06:34
这两天在开发调试过程中,老是会出现在一个 "正在中止线程“(threadabortexception)的例外信息。 例外是由 response.redirect 方法产生的...
这两天在开发调试过程中,老是会出现在一个 "正在中止线程“(threadabortexception)的例外信息。
例外是由 response.redirect 方法产生的,虽然知道是线程的问题, 但是不知为何 redirect会出现这样的错误,以前是没有碰到过,转移到 asp.net 2.0 开发就遇上了。
在狂google了一下后,才发现ms早就发现了这个问题,但提供了解决方法。以下是主要信息的摘要:
症状
如果使用 response.end、response.redirect 或 server.transfer 方法,将出现 threadabortexception 异常。您可以使用 try-catch 语句捕获此异常。
原因
response.end 方法终止页的执行,并将此执行切换到应用程序的事件管线中的 application_endrequest 事件。不执行 response.end 后面的代码行。

此问题出现在 response.redirect 和 server.transfer 方法中,因为这两种方法均在内部调用 response.end。
解决方案
要解决此问题,请使用下列方法之一:• 对于 response.end,调用 httpcontext.current.applicationinstance.completerequest 方法而不是 response.end 以跳过 application_endrequest 事件的代码执行。
• 对于 response.redirect,请使用重载 response.redirect(string url, bool endresponse),该重载对 endresponse 参数传递 false 以取消对 response.end 的内部调用。例如: response.redirect ("nextpage.aspx", false);

b-e-a-utiful! 就这么简单,问题解决了,感谢微软,感谢google,感谢上帝!

现在把解决方法张贴出来,希望能帮助更多人解决开发过程中遇到的类似问题,将搜索进行到底!