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

 更新时间:2012年11月30日 11:40:44   作者:  
这两天在开发调试过程中,老是会出现在一个 "正在中止线程“(ThreadAbortException)的例外信息,很是疑惑,于是网上收集整理了一下,现在晒出来和大家分享,希望对你们有帮助
这两天在开发调试过程中,老是会出现在一个 "正在中止线程“(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,感谢上帝!

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

相关文章

  • C#单向链表实现非升序插入方法的实例详解

    C#单向链表实现非升序插入方法的实例详解

    单向链表是一种数据结构,其中元素以线性方式连接在一起,每个元素都指向下一个元素,非升序插入意味着元素不是按升序(从小到大)插入链表中,本文给大家介绍了C#单向链表实现非升序插入方法的实例,需要的朋友可以参考下
    2024-03-03
  • C#使用System.Net邮件发送功能踩过的坑

    C#使用System.Net邮件发送功能踩过的坑

    这篇文章主要介绍了C#使用System.Net邮件发送功能踩过的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • C# WebApi Get请求方式传递实体参数的方法示例

    C# WebApi Get请求方式传递实体参数的方法示例

    这篇文章主要给大家介绍了关于C# WebApi Get请求方式传递实体参数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • C# 静态变量与静态方法实例研究

    C# 静态变量与静态方法实例研究

    写了一个翻译英汉单词辞典的小程序,发现在调用几千次的时候速度很慢
    2011-11-11
  • C# Record关键字示例详解

    C# Record关键字示例详解

    C#9.0引入record关键字,用于定义不可变且专注于数据表示的记录类型,记录类型自动生成构造函数、ToString、Equals和GetHashCode方法,并支持不可变性和可变性,适用于数据传输对象、不可变数据结构和配置对象等场景,本文介绍C# Record关键字,感兴趣的朋友一起看看吧
    2025-01-01
  • C#中重写tospring方法的实现

    C#中重写tospring方法的实现

    重写ToString方法允许你自定义对象的字符串表示形式,本文主要介绍了C#中重写tospring方法的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • C#类的多态性详解

    C#类的多态性详解

    这篇文章主要为大家详细介绍了C#类的多态性,主要有两种:一是编译时的多态性,二是运行时的多态性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-10-10
  • C#分布式事务的超时处理实例分析

    C#分布式事务的超时处理实例分析

    这篇文章主要介绍了C#分布式事务的超时处理,以实例形式较为详细的分析了C#分布式事务的超时处理相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • C#入参使用引用类型要加ref的原因解析

    C#入参使用引用类型要加ref的原因解析

    这篇文章主要介绍了C#入参使用引用类型要加ref的原因解析,我们在实际开发中还是能够碰到一些引用类型添加ref的场景,其实道理也是一样的,就是将引用类型的栈的地址传递到了方法中,那么和不添加有啥区别,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • C#环形缓冲区(队列)完全实现

    C#环形缓冲区(队列)完全实现

    这篇文章主要为大家详细介绍了C#环形缓冲区(队列)完全实现代码,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论