我正在研究asp.net应用程序..当我尝试编译并运行应用程序时;它运行成功。
但是当我尝试调试应用程序时,它在任何时候都会给我错误 -
mscorlib.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常
它不会在任何特定的代码行给出错误..它在任何代码行(不确定)给出此错误..然后网页显示 - “服务器应用程序不可用”错误。
即使我尝试在即时窗口/快速监视中解析/执行某些语句 - 它也会给我上述错误..
例如,我在XElement中加载了一个xml文档(超过10000行),当我尝试通过xpath检查某些属性值为XElementObj.XPathSelectElement(“/ asdf / asd / wqer / xyz”)时...给出了上面的错误..(不是所有的时间,而是随机的)。
任何人对此有任何想法..请帮忙。
答案 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方法。