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,感谢上帝!
现在把解决方法张贴出来,希望能帮助更多人解决开发过程中遇到的类似问题,将搜索进行到底!
相关推荐
-
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 执行完后修改
随机推荐
- jquery 属性选择器(匹配具有指定属性的元素)
- python3.4用函数操作mysql5.7数据库
- js预载入和JavaScript Image()对象使用介绍
- PHP生成随机字符串(3种方法)
- ASP中用ajax方式获得session的实现代码
- VC++简单实现关机、重启计算机实例代码
- javascript中call apply 的应用场景
- python操作 hbase 数据的方法
- javascript HTML5文件上传FileReader API
- jquery实现图片轮播器
- SQLServer恢复表级数据详解
- 实例讲解JQuery中this和$(this)区别
- 三步轻松搭建springMVC框架
- jq实现酷炫的鼠标经过图片翻滚效果
- PHP安装全攻略:APACHE
- 站长助手-网站web在线管理程序 v1.0 下载
- php ctype函数中文翻译和示例
- 如何把php5.3版本升级到php5.4或者php5.5
- 浅谈Android为RecyclerView增加监听以及数据混乱的小坑
- C++类成员构造函数和析构函数顺序示例详细讲解