I am currently writing a generic error handler with logging for an application, which should extract useful information from the sender object.
As you already know, the Application_Error handler in Global.asax is defined as follows:
protected void Application_Error(Object sender, EventArgs e)
When I set a breakpoint inside of this method, I am getting through the locals window a lot of useful information from the sender:
In the type column, Visual Studio suggests the object is of type
, but this seems to be an artificial type because when I am trying to cast it like
var senderInfo = (ASP.global_asax)sender;
I am getting the following error:
CS0246: The type or namespace 'ASP' could not be found (are you missing a using directive or an assembly reference?)
So there are 2 questions related with "auto"-casting:
- Is there a way to cast
into a suitable class type containing all the info the Locals window is showing? (Note that I don't require the static and non-public members)
- Likewise, can this be achieved for the exception object as well? (You can see in the screen shot that
is of type System.Exception, but the exact type is
. This could be especially useful for
because here we're getting the real info about the reason why this exception occurred.)
var exc = Server.GetLastError();
var innerExc = exc.InnerException;
this question "how to convert the sender to the best-fitting object type so all members can be accessed?"
occurred while developing an
application, but the answer is not limited to it, it can be useful for any
I found some similar questions in Stackoverflow (here
) but they are not duplicates because they are dealing with different topics.