2009-07-22 11 views
8

में प्रवेश सत्र चर मैं ASP.NET अनुप्रयोग और Global.asax 'अनुप्रयोग त्रुटि इवेंट में है, मैं पता लगाने के लिए एक विधि बोल रहा हूँ/log error.I सत्र का उपयोग करना चाहते चर सामग्री यहाँ मैं नीचे दिए गए कोडASP.NET: Global.asax

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); 
} 

मैं कोड की पंक्ति में एक त्रुटि हो रही है जहाँ मैं सत्र variable.Visual स्टूडियो कह रहा है कि

"सत्र उपलब्ध नहीं है तक पहुँचने हूँ इस्तेमाल किया इस संदर्भ में "

इससे कैसे छुटकारा पाएं? कोई विचार?

अग्रिम

+0

त्रुटि कहां से फेंक दी जा रही है? एएसपीएक्स कोड बीआईंड (कौन सा इवेंट?) में, या एक http हैंडलर आदि में? यह निर्धारित कर सकता है कि सत्र ऑब्जेक्ट का उपयोग मान्य है या नहीं – JonoW

उत्तर

11

यदि आप इसे इस तरह करते हैं यह काम करना चाहिए:

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

क्योंकि कि मैं अपने आप को क्या करना है।

वास्तव में क्या आप के साथ मतलब है: दृश्य स्टूडियो कह रहा है कि "सत्र इस संदर्भ में उपलब्ध नहीं है"? क्या आपको एक कंपाइलर त्रुटि या रन-टाइम अपवाद मिलता है?

अगर वहाँ वास्तव में एक वर्तमान HttpContext और एक सत्र है आप अधिक रक्षात्मक और परीक्षण होने की कोशिश कर सकते हैं:

if (HttpContext.Current != null && 
    HttpContext.Current.Session != null) { 
    strError = HttpContext.Current.Session["trCustomerEmail"] 
} 
+0

वही कोड जो मैंने इस्तेमाल किया था। यह एक रनटाइम अपवाद है, मुझे – Shyju

+0

मिल गया है क्या आप सत्र तक पहुंचने के दौरान प्राप्त अपवाद संदेश पोस्ट कर सकते हैं और अपवाद संदेश जिसे आप संभालने का प्रयास कर रहे हैं? –

3

धन्यवाद मुझे लगता है कि applicaiton त्रुटि पूरे आवेदन के लिए विशिष्ट है और एक सत्र उपयोगकर्ता के लिए विशिष्ट है। हो सकता है कि आप अपना अपवाद फेंक दें जहां आप अपने अपवाद के अंदर सत्र से जानकारी को सहेजते हैं।

+0

हां। Applicationxxxx ईवेंट आपके एप्लिकेशन के लिए विशिष्ट है, सत्र के लिए नहीं। – Icebob

1

आप इस कोशिश कर सकते हैं:

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

तो आप का उपयोग करना चाहिए इस तरह है :

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

लेकिन यदि सत्र ऑब्जेक्ट लोड होने से पहले अपवाद फेंक दिया गया था, तो यह शून्य हो जाएगा

संबंधित मुद्दे