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,感谢上帝!

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

(0)

相关推荐

  • response.setContentType()的作用及MIME参数详解

    response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据. 例如web浏览器就是通过MIME类型来判断文件是GIF图片.通过MIME类型来处理json字符串. Tomcat的安装目录\conf\web.xml 中就定义了大量MIME类型 ,可以参考. response.setContentType("text/html; charset=utf-8"); html .setC

  • response.setHeader参数、用法的介绍

    meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中 1.<meta name="Generator" contect="">用以说明生成工具(如Microsoft FrontPage 4.0)等: 2.<meta name="KEYWords" contect="">向搜索引擎说明你的网页的关键词: 3.<me

  • 在FireFox/IE下Response中文文件名乱码问题解决方案

    发现很多园子里的人在处理Response下载文件名是使用这个方法 Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileInfo.Name, System.Text.Encoding.UTF8)); 但这个只是针对没有空格和IE的情况下使用. 如果想在FireFox下输出没有编码的文件,并且IE下输出的文件名中空格不为+号,就要多

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

    这两天在开发调试过程中,老是会出现在一个 "正在中止线程"(ThreadAbortException)的例外信息. 例外是由 Response.Redirect 方法产生的,虽然知道是线程的问题, 但是不知为何 Redirect会出现这样的错误,以前是没有碰到过,转移到 Asp.net 2.0 开发就遇上了. 在狂Google了一下后,才发现MS早就发现了这个问题,但提供了解决方法.以下是主要信息的摘要: 症状 如果使用 Response.End.Response.Redirect 或

  • 高效的使用 Response.Redirect解决一些不必要的问题

    介绍: 我正在评估一个 ASP.NET Web 项目应用.它有一些可扩展性问题.意味着当网站访问量增加的时候.系统将会变得缓慢.当我查看应用日志.我找到了大量的 ThreadAbortException. 这个应用大量的使用了 Response.Redirect (是的 endResponse= true),这个就是可扩展性问题的根源.通过endResponse = false 在Response.Redirect将会解决这个问题. 但这样做会导致应用程序出现一些奇怪的问题.因为应用程序将假设在

  • 获取软件下载的真实地址!再谈获取Response.redirect重定向的URL

    http://www.im286.com/viewthread.php?tid=1550010&extra=page%3D1 其实这个问题落伍谈了n次了其中care4也说了两次所以如果你有问题最好先搜索一下 说不定问题早有人解决了http://www.im286.com/viewthread. ... ;highlight=%2Bcare4http://www.im286.com/viewthread. ... ;highlight=%2Bcare4care4的代码有一个小缺点 就是需要组件.第

  • asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别

    Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一个页面: Response.Redirect("WebForm2.aspx") 或者 Response.Redirect("http://www.cnnas.com/") Server.Transfer 也是通过一条语句将用户引导到另一页面,比如:Server.Transfer("WebForm2.aspx").不过,这

  • 三种方法让Response.Redirect在新窗口打开

    Response.Rederect在默认情况下是在本页跳转,所以除了在js中用window.open或是给A标签添加target属性之外,在后台似乎不能来打开新的页面,其实不然,通过设置form的target属性同样可以让Response.Rederect所指向的url在新的窗口打开.下面用三种方法来实现. 1 .给form指定target属性,那么本页面中所有的Response.Rederect都将在新的窗口中打开.代码如下: 复制代码 代码如下: protected void Page_Lo

  • asp.net中Response.Redirect与Server.Transfer的区别分析

    Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面.调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流. 如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换. Response.Redirect则是客户端第一次请求服务器返回状态代码302及

  • Server.Transfer,Response.Redirect的区别

    如果你读过很多行业杂志和 ASP.NET 示例,你会发现,大多数人使用 Response.Redirect 将用户引导到另一个页面,而另一些人好像偏爱于神秘的 Server.Transfer,那么,这二者有什么区别? Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一个页面: Response.Redirect("WebForm2.aspx") 或者 Response.Redirect("http:

  • 如何用Response.Redirect方法传递汉字

    使用Response.Redirect方法传递汉字,有时会发现所传递的值和接收到的内容不符,接受的值丢失了几个字或者变成了一堆乱码.那么如何才能保证所传递的汉字被正确接收呢?     页面A传递值的代码如下: string Message=Server.UrlEncode("欢迎学习ASP.NET!"); Response.Redirect("WebForm2.asp?Msg="+Message);    页面B接受值的代码如下: string Message=Se

  • Web Worker线程解决方案electron踩坑记录

    目录 初始化项目 编写入口文件和 electron 插件 websocket websocket 服务 连接 websocket 服务 发送心跳 取消心跳 重新连接 其它优化 Worker 初始化项目 electron 开发时会遇到一对多的情况,在进行 websocket 通信时,如果接收到服务端多个指令时,而这个指令刚好需要占用线程,这个时候整个界面就会失去响应,那么我们就可以使用线程来解决这个问题. npm create vite@latest electron-worker 执行完后修改

随机推荐