Server.Transfer一定会触发“正在中止线程”异常吗?

llm89721630 2010-12-17 07:47:16
Server.Transfer无论如何都会触发“ThreadAbortException: 正在中止线程”,那还用它干嘛??? 众所周知如果发生异常将很大程度影响程序的性能,那这个一定会报错的方法还用了干嘛?是否有办法不让它报错呢?
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlegang 2010-12-21
  • 打赏
  • 举报
回复
server.transfer 方法可能已经是decepreted
llm89721630 2010-12-21
  • 打赏
  • 举报
回复
我问的是既然无法避免出现异常,那server.transfer这个方法还要来干什么?
llm89721630 2010-12-21
  • 打赏
  • 举报
回复
上面这位老兄竟然照搬一个答案给我,你所发的这个我都背得了,搜索引擎里搜到的全都是这样的,我至少看到20页以后了,要有用的话我干嘛跑这来提问呢
wuyq11 2010-12-17
  • 打赏
  • 举报
回复
症状
如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常。您可以使用 try-catch 语句捕获此异常。

原因
<!-- Inject Script Filtered -->
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);
如果使用此替代方法,将执行 Response.Redirect 后面的代码。

对于 Server.Transfer,请改用 Server.Execute 方法。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧