在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常

1、现象:

    在调试ASP.NET程序时,一边看浏览器窗口一边看 Visual Studio 输出窗口,发现其中出现以下信息:

在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
“System.Threading.ThreadAbortException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理

上网查一下:http://www.cnblogs.com/wbcms/archive/2008/03/24/1119307.html

 

2、原因:
    由于内部你的代码调用了Response.End()的原因,或者调用了Response.Redirect("")Server.Transfer("")这两个方法,因为这两个方法内部也调用了Response.End()。

    Response.End 方法停止页的执行,并将该执行变换到应用程序的事件管线中的Application_EndRequest 事件。 Response.End 后面的代码行将不执行。

    这种现象是设计使然。

 

3、解决:

(1)、Response.End() -> ApplicationInstance.CompleteRequest,以便跳过 Application_EndRequest 事件的代码执行HttpContext.Current.ApplicationInstance.CompleteRequest();

(2)、Response.Redirect() -> Response.Redirect(String url, bool endResponse=false)
对 endResponse 参数它传递 false以取消对 Response.End 的内部调用,如果使用这种解决方法,Response.Redirect 后面的代码将得到执行

(3)、Server.Transfer() -> Server.Execute() 

你可能感兴趣的:(ASP.NET,C#和.NET)