Can't get exception stack

G

Guest

You can make a call to Server.GetLastError().GetBaseException() in your
Global.asax Application_Errror handler. If desired, you can log this
exception and then call Server.ClearError()

Peter
 
S

Steven Cheng[MSFT]

Hello Dave,

Are you going to use the Page_Error event to get the unhandled exception in
page and log it? Based on my understanding, we can use the
Server.GetLastError to obtain the original unhandled exception in ASP.NET
page's process request.(in Page_Error or application_Error event).

From the code you provided, I'm wondering why you rethrow the original
exception in Page_Error event handler as below:

==================
private void Page_Error(object sender, EventArgs e)
{
throw Server.GetLastError();
}
==================

this will cause the Server's LastError be replaced by this exception and
the callstack is replaced by the new one(from Page_Error instead of the
original exception).

I've performed test through the following code:

=========================
protected void Page_Error(object sender, EventArgs e)
{
Response.Write("<br/>" + Server.GetLastError().StackTrace);
Response.End();
}
protected void Button1_Click(object sender, EventArgs e)
{
throw new Exception("test page exception..........");
}
=========================

and the Page_Error can correctly get the exception callstack of the one
throwed in the Button1_click.

Hope this helps.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead



==================================================

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.



Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.

==================================================



This posting is provided "AS IS" with no warranties, and confers no rights.
 
G

Guest

Hi;

I amy be approaching this wrong. What I want is all exceptions to go to
error.aspx & error.aspx.cs. In the code-behind I log the error with the stack
trace. I took this approach as it puts all of the error handling in a single
place.

Once I removed the Page_Error method and look at InnerException if it was
wrapped ain a Http???Exception, it all seesm to work the way I want.

Is there a better way to do this?

--
thanks - dave
david_at_windward_dot_net
http://www.windwardreports.com

Cubicle Wars - http://www.windwardreports.com/film.htm
 
S

Steven Cheng[MSFT]

Hello Dave,

If you want to get all the unhandled exceptions, the global.asax's
Application_Error event should be more appropriate or you just want to
capture the exceptions at a certain page?

As you said you want to redirect the user to a error.aspx page and display
the error, you can consider use the Server.Transfer to forward the current
request to the error page and use Server.GetLastError to get the exception.
e.g.:

=====in problem page===========

public partial class _Default : System.Web.UI.Page
{
........................


protected void Button1_Click(object sender, EventArgs e)
{
Exception ex = new Exception("test exception...........");

throw ex;
}


protected void Page_Error(object sender, EventArgs e)
{
Server.Transfer("~/error.aspx");
}
}


======in error.aspx page===========
public partial class error : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();

Response.Write("<br/>Server Error:<br/>" + ex.ToString());



}
}
===============================

Hope this helps.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead




This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,177
Latest member
OrderGlucea
Top