最近一段时间用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 异常,里面提到解决方案为
对于 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);
对于 Server.Transfer,请改用 Server.Execute 方法。
于是回去修改了一下,发现那些个ThreadAbortException果真都不见了。哪个happy啊。
后来又详细的看了一下那个文章发现最后一段是这样的:
这篇文章中的信息适用于:
• Microsoft ASP.NET 1.1
• Microsoft ASP.NET 1.0
问题就在于,这个对策是对应于1.x的版本的,我用的是2.x的版本,为什么也会出现这样的问题呢,难道是因为加入了spring.net以后导致了页面调用的时候使用了1.x的api?
有点不解,请知道的兄弟帮我看看是为什么?
分享到:
相关推荐
项目中碰到的,已解决,写个文档记录一下
Console.WriteLine("ThreadAbortException:{0}", ex.Message); } }); ``` 四、注意事项 需要注意的是,通过Thread.Abort()停止的线程无法直接通过Thread.Start()方法再次启动,必须重新创建一个线程启动。因此...
这样可以跳过 Application_EndRequest 事件的代码执行,从而避免出现 ThreadAbortException 异常。 6. Response.Redirect 方法的使用 在 ASP.NET 中,Response.Redirect 方法可以用来重定向到另一个页面。但是,...
当在执行 webservice 的类型构造 static Webservice(){} 中,用户中断了程序的执行时,下次使用 webservice 的任何方法时,都会抛出 ThreadAbortException 的错误。即使在第一次发生 ThreadAbortException 的错误时...
这两天在开发调试过程中,老是会出现在一个 “正在中止线程“(ThreadAbortException)的例外信息。 例外是由 Response.Redirect 方法产生的,虽然知道是线程的问题, 但是不知为何 Redirect会出现这样的错误,以前是...
关于C#多线程学习,本篇将深入探讨在C#中如何管理和操作线程,包括启动、停止、暂停线程、调整线程优先级等关键知识点。 ### 启动线程 在C#中,启动一个新线程通常通过`Thread`类实现。创建一个新的线程对象时,...
如果使用`Response.End()`,`ThreadAbortException`会被自动捕获,但使用`CompleteRequest()`则不会抛出这个异常,因此在处理错误时需要注意。 总结来说,实现服务器文件下载的关键在于设置合适的HTTP响应头信息,...
接下来,关于C#的异常终止处理,程序可以通过捕获并处理`System.Threading.ThreadAbortException`来防止线程被意外终止。但请注意,这并不意味着可以完全避免进程终止,因为操作系统或调试器仍然可以强制结束进程。 ...
ThreadAbortException 发生在对 Abort 方法进行调用时。例如,尝试中止线程时,会引发 ThreadAbortException。 39. TypeInitializationException TypeInitializationException 发生作为由类初始值设定时的异常。...
这是因为`Response.Redirect`实际上会引发一个内部的`ThreadAbortException`,立即终止当前请求的执行。然而,这可能导致未完成的工作丢失,或者在某些情况下,不希望立即终止请求。因此,我们可以在`EndRequest`...
标题“Webcast20050111_PPT.zip”暗示这可能是一个关于网络研讨会的压缩文件,日期为2005年1月11日,格式为PPT,通常用于演示文稿。该文件可能包含了一次在线讲座或培训的详细内容,特别是与.NET技术相关的主题。 ...
我找到了大量的 ThreadAbortException. 这个应用大量的使用了 Response.Redirect (是的 endResponse= true),这个就是可扩展性问题的根源。通过endResponse = false 在Response.Redirect将会解决这个问题. 但这样做会...
不允许其他任何异常类型(除了诸如ThreadAbortException之类的常规CLR规则外)。 该实现应设计为期望字符串key参数为null,并且必须将此解释为获取所请求类型的“默认”实例的请求。 “默认”的含义取决于基础容器...
需要注意的是,如果调用 Thread.CurrentThread.Abort() 方法关闭主线程的话,就会抛出 ThreadAbortException 异常。因此,这种方法不可取。 MSDN 对前台线程和后台线程的解释是:托管线程或者是后台线程,或者是...
5. ThreadAbortException:线程被系统强制终止时抛出。 6. SqlException:与SQL Server数据库交互时出现的错误,如连接失败、查询语法错误等。 7. UnauthorizedAccessException:访问权限不足,尝试访问受保护资源时...
但这种方法可能会引发ThreadAbortException,且不推荐使用,因为它不提供清理资源的机会。 3. 使用volatile或Interlocked操作来设置一个共享变量,让线程自行检测并优雅地退出。 五、Winform与多线程交互 在Winform...
使用`try-catch-finally`结构可以捕获和处理异常,而`ThreadAbortException`是线程被强制终止时抛出的特殊异常。 线程池是一种优化线程创建和销毁的机制,它管理一组可重用线程,减少系统开销。C#中的`ThreadPool`...
这是曼弗雷德(Manfred)的补充说明。 :-)当然,您可以使用Thread.Abort,并且在某些情况下应该使用Thread.Abort,但是您... 在所有情况下,您都应处理ThreadAbortException异常。 严格来说,如果这是...的最后阶段...
调用`Abort`会引发一个`ThreadAbortException`,线程通常会在处理这个异常时结束。然而,线程可以捕获此异常并进行清理工作。 ```csharp Thread threadToAbort = ... threadToAbort.Abort(); ``` 3. **Join方法...