mscorlib.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常

kau*_*k27 18 .net

我正在研究asp.net应用程序..当我尝试编译并运行应用程序时; 它运行成功.

但是当我尝试调试应用程序时,它在任何时候都给我错误 -

mscorlib.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常

它没有在任何特定代码行给出错误..它在任何代码行(不确定)给出此错误..然后网页显示 - "服务器应用程序不可用"错误.

即使我试图在即时窗口/快速监视中解析/执行某些语句 - 它给我上面的错误..

例如,我在XElement中加载了一个xml文档(超过10000行),当我尝试通过xpath检查某些属性值为XElementObj.XPathSelectElement("/ asdf/asd/wqer/xyz")时..它给出了上面的错误..(不是所有的时间,而是随机).

任何人对此有任何想法..请帮助.

Chr*_*yne 33

我有类似的东西,从另一个问题中找到了这个答案:

如果要确定异常发生的位置,可以选择Debug-> Exceptions菜单项,并在出现的对话框中选中"Common Language Runtime Exceptions"的第一个复选框.这将使调试器在发生异常时立即中断,而不是仅在未处理的异常中断.

这也是为什么捕获一般异常通常是一个坏主意的一个原因,除非您明确记录捕获的信息.


Hul*_*vej 12

我在我的asp.net应用程序中抛出此异常,并发现此论坛帖子:

PRB:如果您使用Response.End,Response.Redirect或Server.Transfer http://support.microsoft.com/default.aspx?scid=kb;en-us;312629,则会发生ThreadAbortException

这是有道理的,因为我在渲染任何东西之前重定向页面(顺便说一下,预期的行为)

MS解决任何异常的解决方法:

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

  • 对于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方法.

如果使用此变通方法,则执行Response.Redirect之后的代码.对于Server.Transfer,请改用Server.Execute方法.