6

उदाहरण के लिए, हम ग्लोबल.एक्सएक्स त्रुटि हैंडलर से, एक त्रुटि रिपोर्टिंग ईमेल में उपयोग करने के लिए वाईएसओडी आउटपुट को कैप्चर करना चाहते हैं। क्या अंतर्निहित ysod जनरेटर का लाभ उठाने का कोई तरीका है?क्या एएसपी.नेट पीले स्क्रीन ऑफ डेथ (वाईएसओडी) मांग पर कब्जा कर लिया जा सकता है?

उत्तर

7

हां एक तरीका है कि आप यह कर सकते हैं।

वैश्विक में एप्लिकेशन_इरर ईवेंट में।Asax फ़ाइल, सिस्टम के रूप में अंतिम अपवाद प्राप्त करें। HttpUnhandledException। आपका कोड इस तरह दिखेगा:

var lastException = Server.GetLastError() as HttpUnhandledException; 
string Ysod = lastException.GetHtmlErrorMessage(); 
// your call to emailing routine follows 

मैं अन्य लोगों की टिप्पणियों से सहमत हूं। आप इसे ELMAH के साथ भी कर सकते हैं।

+0

3 साल और कौन जानता है कि मैं ईएलएमएएच का उपयोग क्यों नहीं करना चाहता था, लेकिन यही वह जवाब है जिसे मैं निश्चित रूप से ढूंढ रहा था। मुझे लगता है कि एक व्यस्त परियोजना में एक और निर्भरता नहीं लेना चाहता था जो पहले से ही तीसरे पक्ष के मॉड्यूल के साथ बह रहा है। – nicknystrom

+1

वास्तव में जो भी मैं खोज रहा था, मैं अपनी परियोजना में एल्मा का उपयोग करता हूं, लेकिन जब उपयोगकर्ता एक प्रशासक होता है, तो मैं विस्तृत वाईएसओडी को केवल दोस्ताना त्रुटि संदेश नहीं दिखाना चाहता हूं। –

+0

मैंने अन्य परियोजनाओं पर एल्मा का उपयोग किया, लेकिन इस मामले में विशेष रूप से, मैं त्रुटि लॉगिंग को नियंत्रित करना चाहता हूं, क्योंकि sh! टी बहुत गंभीर हो गया है, यहां तक ​​कि एल्मा के लिए भी! यह मूल प्रश्न का सही उत्तर देता है और आज भी खड़ा है * श्वास * – ppumkin

2

आपको ELMAH की जांच करनी चाहिए जो आप स्वचालित रूप से पूछ रहे हैं।

2

मैं सामान्य रूप से कहूंगा, आप नहीं चाहते कि उपयोगकर्ता वाईएसओडी का अनुभव करे। यह कुछ ऐसा है कि मैंने पहले वेब एप्लिकेशन में डाल दिया त्रुटि को पकड़ने और उसके बाद उपयोगकर्ता के लिए एक और अधिक सुंदर त्रुटि पृष्ठ के लिए अनुमति देने के लिए

protected void Application_Error(object sender, EventArgs e) 
{ 
    MailMessage msg = new MailMessage(); 
    HttpContext ctx = HttpContext.Current; 

    msg.To.Add(new MailAddress("[email protected]")); 
    msg.From = new MailAddress("[email protected]"); 
    msg.Subject = "My app had an issue..."; 
    msg.Priority = MailPriority.High; 

    StringBuilder sb = new StringBuilder(); 
    sb.Append(ctx.Request.Url.ToString() + System.Environment.NewLine); 
    sb.Append("Source:" + System.Environment.NewLine + ctx.Server.GetLastError().Source.ToString()); 
    sb.Append("Message:" + System.Environment.NewLine + ctx.Server.GetLastError().Message.ToString()); 
    sb.Append("Stack Trace:" + System.Environment.NewLine + ctx.Server.GetLastError().StackTrace.ToString()); 
    msg.Body = sb.ToString(); 

    //CONFIGURE SMTP OBJECT 
    SmtpClient smtp = new SmtpClient("myhost"); 

    //SEND EMAIL 
    smtp.Send(msg); 

    //REDIRECT USER TO ERROR PAGE 
    Server.Transfer("~/ErrorPage.aspx"); 
} 
9

मैं ELMAH (Error Logging Modules and Handlers for ASP.NET) में दिखेगा:

ELMAH (त्रुटि लॉगिंग मॉड्यूल और हैंडलर) एक अनुप्रयोग-व्यापी त्रुटि लॉगिंग सुविधा है जो पूरी तरह से प्लग करने योग्य है। यह को एक चल रहे एएसपी.NET वेब अनुप्रयोग, या यहां तक ​​कि सभी एएसपी.NET वेब अनुप्रयोगों पर मशीन पर पुन: संकलन या पुन: तैनाती के बिना किसी भी आवश्यकता के गतिशील रूप से जोड़ा जा सकता है।

एक बार ELMAH एक चल वेब अनुप्रयोग में गिरा दिया गया है और कॉन्फ़िगर किया गया उचित रूप से, आप अपने कोड की एक लाइन बदले बिना निम्नलिखित सुविधाएं मिलती है:

  • लगभग सभी बिना क्रिया अपवादों में से लॉगिंग।
  • रिकॉर्डेड अपवादों के पूरे लॉग को दूरस्थ रूप से देखने के लिए एक वेब पेज।
  • किसी भी एक पृष्ठ को अपवाद लॉग इन किसी भी व्यक्ति के पूर्ण विवरण को दूरस्थ रूप से देखने के लिए।
  • कई मामलों में, आप मौत की मूल पीले स्क्रीन की समीक्षा कर सकते हैं कि ASP.NET किसी दिए गए अपवाद के लिए जेनरेट किया गया है, यहां तक ​​कि customErrors मोड बंद कर दिया गया है।
  • यह होने पर प्रत्येक त्रुटि की एक ई-मेल अधिसूचना।
  • लॉग से आखिरी 15 त्रुटियों की एक आरएसएस फ़ीड।
1

Global.asax फ़ाइल में Application_Error ईवेंट को ट्रिगर करने के लिए जब भी एक बिना क्रिया का अपवाद आवेदन में होता है। आप सर्वर.GetLastError() विधि का उपयोग कर हुए अंतिम अपवाद को पकड़ सकते हैं।

इसी तरह, आप web.config फ़ाइल में customErrors अनुभाग के तहत web.config में निर्दिष्ट करके अपना स्वयं का कस्टम त्रुटि पृष्ठ बना सकते हैं। एक डिफ़ॉल्ट फ़ाइल निर्दिष्ट करके, जब कोई अपवाद रूट किया जाता है तो आप कोई कस्टम कोडिंग कर सकते हैं।

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