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

时间:2009-12-29 06:05:52

标签: .net

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

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

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

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

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

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

任何人对此有任何想法..请帮忙。

2 个答案:

答案 0 :(得分:32)

我有类似的东西,并从另一个问题中找到了this answer

  

如果你想确定在哪里   你可以发生例外情况   选择Debug-> Exceptions菜单   项目,并在出现的对话框中,   选中“Common”的第一个复选框   语言运行时异常“。这   将尽快使调试器中断   作为例外而不是仅发生   打破未处理的例外。

     

这也是原因之一   一般来说,捕捉泛型是一个坏主意   例外,除非你是清楚的   记录捕获的信息。

答案 1 :(得分:12)

我在我的asp.net应用程序中抛出此异常,并找到了this forum post

  

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

这是有道理的,因为我在呈现任何内容之前重定向页面(顺便说一下预期的行为)

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方法。