惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
L
LangChain Blog
M
MIT News - Artificial intelligence
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Check Point Blog
P
Proofpoint News Feed
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
U
Unit 42
I
InfoQ
月光博客
月光博客
爱范儿
爱范儿
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
博客园 - Franky
D
Docker
B
Blog

博客园 - 彭灿明

使用int?来确保值类型也可以为null SQL总结 .NET1.0升级至2.0十个问题 这两者需要映射到相同的服务器,从而无法打开项目的解决方法: Server.Transfer,Response.Redirect的区别 - 彭灿明 - 博客园 数据处理 分页语句 刘佳传的 xml节点删除修改 C# 3.0 新特性初步研究 在Asp.net中为图像加入版权信息 javascript 动态添加表格行 HTML结构化:实践DIV+CSS网页布局入门指南 BLOG技巧:用Javascript为你的Blog做一个计数器 .Net中常见问题及解决方法归类 Visual Studio 2005常用插件搜罗 微软开源官方网站上线! RSS在线阅读器 构造DATATABLE 数据库设计成功!
使用Server.Transfer,Response.Redirect注意点
彭灿明 · 2007-03-08 · via 博客园 - 彭灿明

在调用response.end的时候有时会报告“线程正被终止”的异常,以下是微软官方的解决办法

症状

如果使用 Response.EndResponse.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 方法。