I am working on an asp.net application.. when I try to compile and run the application; it runs successfully.
But when I try to debug the application it gives me error at any point -
A first chance exception of type 'S开发者_运维知识库ystem.Threading.ThreadAbortException' occurred in mscorlib.dll
It doesnt give error at any specific code line.. it gives this error at any code of line (not sure).. and then web page display - "Server Application Unavailable" error.
Even when I try to parse/execute some statement in immediate window / quick watch - it gives me above error..
for example, I loaded an xml document (of more than 10000 lines) in XElement and when I try to check some attribute value thru xpath as XElementObj.XPathSelectElement("/asdf/asd/wqer/xyz").. it gives above error.. (not all the time but randomly).
anybody having any idea on this.. please help.
I had something similar and found this answer from another question:
If you want to pinpoint where the exceptions are occurring, you can select the Debug→Exceptions menu item, and in the dialog that appears, check the first checkbox for "Common Language Runtime Exceptions". This will make the debugger break as soon as an exception occurs instead of only breaking on unhandled exceptions.
This is also one reason why it is generally a bad idea to catch generic exceptions unless you are clearly logging the information caught.
I had this exception thrown in my asp.net app, and found this forum post:
PRB: ThreadAbortException Occurs If You Use Response.End, Response.Redirect, or Server.Transfer http://support.microsoft.com/default.aspx?scid=kb;en-us;312629
This make sense as I was redirecting on a page right before anything was rendered (expected behavior by the way)
Workaround by MS to suppress any exceptions:
To work around this problem, use one of the following methods:
For Response.End, call the HttpContext.Current.ApplicationInstance.CompleteRequest method instead of Response.End to bypass the code execution to the Application_EndRequest event.
For Response.Redirect, use an overload, Response.Redirect(String url, bool endResponse) that passes false for the endResponse parameter to suppress the internal call to Response.End. For example:
Response.Redirect ("nextpage.aspx", false);
For Server.Transfer, use the Server.Execute method instead.
If you use this workaround, the code that follows Response.Redirect is executed. For Server.Transfer, use the Server.Execute method instead.
精彩评论