8

I have an ASP.NET application and in the Global.asax ' Application Error Event, I am calling a method to trace/log the error. I want to use the session variable content here. I used the below code

void Application_Error(object sender, EventArgs e)
{
     //get reference to the source of the exception chain
     Exception ex = Server.GetLastError().GetBaseException();

     //log the details of the exception and page state to the
     //Windows 2000 Event Log
     GUI.MailClass objMail = new GUI.MailClass();
     string strError = "MESSAGE: " + ex.Message + "<br><br><br>" + "SOURCE: " + ex.Source + "<br>FORM: " + Request.Form.ToString() + "<br>QUERYSTRING: " +    Request.QueryString.ToString() + "<br>TARGETSITE: " + ex.TargetSite + "<br>STACKTRACE: " + ex.StackTrace;
     if (System.Web.HttpContext.Current.Session["trCustomerEmail"] != null)
     {
         strError = "Customer Email : " + Session["trCustomerEmail"].ToString() +"<br />"+ strError;
     }

     //Call a method to send the error details as an Email
     objMail.sendMail("[email protected]", "[email protected]", "Error in " + Request.Form.ToString(), strError, 2);   
} 

I am getting an error in the line of code where I am accessing the session variable. Visual Studio is telling that

Session is not available in this context

How can I get rid of this?

1
  • Where is the error being thrown from? In aspx code beind (which event?), or in a http handler etc? This can determine if use of the session object is valid or not Commented Jul 22, 2009 at 11:44

3 Answers 3

12

It should work if you do it like this:

strError = System.Web.HttpContext.Current.Session["trCustomerEmail"]

Because that is what I do myself.

What exactly do you mean with: Visual Studio is telling that "Session is not available in this context"? Do you get a compiler error or a run-time exception?

You could try to be more defensive and test if there actually is a current HttpContext and a Session:

if (HttpContext.Current != null &&
    HttpContext.Current.Session != null) {
  strError = HttpContext.Current.Session["trCustomerEmail"]
}
Sign up to request clarification or add additional context in comments.

1 Comment

Can you post the exception message you get when accessing the Session and the exception message that you are trying to handle?
3

I think applicaiton error is specific for the whole application and a session is specific for the user. Maybe you can throw your own Exception where you save the information from the session inside your exception.

1 Comment

Yes. Applicationxxxx events is specific for your application, not for a session.
1

You may try this:

HttpContext context = ((HttpApplication)sender).Context;

then you must use is like this:

context.Request.QueryString.ToString()
context.Session["key"] = "fasfaasf";

but if the exception was thrown before the Session object is loaded, it will be null

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.