由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。

使用Response.End时发生异常:

由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。

经查找:

 

原文地址:http://support.microsoft.com/kb/312629/

参考:http://www.dwz.cn/vsP8b

我的解决方法是:捕获ThreadAbortException异常,并不做处理。

 

如果使用 Response.End,Response.Redirect 或 Server.Transfer,ThreadAbortException 发生

 

如果您使用Response.End/u3001 Response.RedirectServer.Transfer方法,将引发ThreadAbortException 异常/u3002您可以使用try-catch语句来捕捉此异常。

Response.End方法结束页执行和将执行切换到应用程序的事件管道中的Application_EndRequest事件。Response.End之后的代码行不会被执行。

因为这两种方法都会内部调用Response.End , Response.RedirectServer.Transfer的方法中发生此问题。

 

若要变通解决此问题,请使用下列方法之一:

  • Response.End,调用HttpContext.Current.ApplicationInstance.CompleteRequest方法,而不是Response.End能够绕过到Application_EndRequest事件的代码执行。
  • 对于Response.Redirect,使用重载,通过要取消内部调用Response.EndendResponse参数的Response.Redirect (url 字符串、 布尔值 endResponse) 。例如:
      Response.Redirect ("nextpage.aspx", false);
    						
    如果您使用此替代方法,遵循Response.Redirect的代码执行。
  • 对于Server.Transfer,而是使用Server.Execute方法。

 

posted @ 2014-11-05 16:04  xiaoyintao  阅读(222)  评论(0编辑  收藏  举报