关于ThreadAbortException

本文介绍了一个使用spring.net+nhibernate+codesmith进行项目开发过程中遇到的ThreadAbortException问题及解决方案。通过调整Response.End、Response.Redirect和Server.Transfer的使用方式,成功避免了异常的出现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一段时间用spring.net+nhibernate+codesmith做一个国外的项目。
一开始没有用spring.net的时候都好好的,用上了spring以后,突然发现在vs.net 2005的控制台中出现了很多System.Thread.ThreadAbortException,虽然对程序运行没有什么影响,但总感觉不爽,而且担心会出现thread dead/lock问题。
于是就在google上搜索,终于找到微软的一个kb里面有提到使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常,里面提到解决方案为
[code]对于 Response.End,调用 HttpContext.Current.ApplicationInstance.CompleteRequest 方法而不是 Response.End 以跳过 Application_EndRequest 事件的代码执行。[/code]
[code]对于 Response.Redirect,请使用重载 Response.Redirect(String url, bool endResponse),该重载对 endResponse 参数传递 false 以取消对 Response.End 的内部调用。例如:
[/code]
[code]Response.Redirect ("nextpage.aspx", false);[/code]
[code]对于 Server.Transfer,请改用 Server.Execute 方法。[/code]
于是回去修改了一下,发现那些个ThreadAbortException果真都不见了。哪个happy啊。
后来又详细的看了一下那个文章发现最后一段是这样的:

[code]这篇文章中的信息适用于:
• Microsoft ASP.NET 1.1
• Microsoft ASP.NET 1.0
[/code]

问题就在于,这个对策是对应于1.x的版本的,我用的是2.x的版本,为什么也会出现这样的问题呢,难道是因为加入了spring.net以后导致了页面调用的时候使用了1.x的api?
有点不解,请知道的兄弟帮我看看是为什么?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值