2010-03-02 5 views
8

मैं एएसपी.NET के साथ एल्मा का उपयोग कर रहा हूं और सोच रहा हूं कि मैं कस्टम डेटा, जैसे एक सत्र चर, एक अनचाहे अपवाद ईमेल में कैसे जोड़ूं।कस्टम एल्मा वाईएसओडी डेटा

मैंने ग्लोबल.एक्सएक्स फ़ाइल में कई हैंडलर की कोशिश की है लेकिन सही नहीं लग रहा है।

उत्तर

4

इसके लिए, मुझे लगता है कि आपको एल्मा source को संशोधित करने और पुन: संकलित करने की आवश्यकता होगी। इसे हासिल करना बहुत मुश्किल नहीं होना चाहिए। यदि आपको Elmah.Error कक्षा के निर्माता में कोई नज़र है, तो HttpContext पारित किया गया है, जिसमें से आपको अपनी आवश्यक जानकारी प्राप्त करने में सक्षम होना चाहिए, उदा। सत्र, फार्म चर आदि आप कस्टम फ़ील्ड Elmah.Error वर्ग के लिए इस डेटा

मुझे लगता है कि Elmah.ErrorMailHtmlFormatter वर्ग जहां ईमेल एक HtmlTextWriter का प्रयोग कर बनाया जाता है, और यहाँ आप RenderSummary() विधि में कोड डालने के शामिल करने के लिए कर सकता है के लिए जोड़ सकते हैं कस्टम फ़ील्ड जिन्हें आपने Elmah.Error में जोड़ा था।

मुझे पता है कि स्रोत के साथ काम करना शुरू करने में दर्द हो सकता है, लेकिन व्यक्तिगत रूप से मुझे लगता है कि यह सबसे साफ तरीका है क्योंकि वर्तमान में रिपोर्ट/ईमेल टेम्पलेट्स के लिए कोई सुविधा नहीं है, और यह बेहतर है कि इसके बाद आउटपुट को बदलने के लिए कुछ बोल्ट करना बेहतर होगा उत्पन्न किया गया है।

1

एंड्रयू के उत्तर ने बहुत मदद की, धन्यवाद। मैंने निम्न कार्य किया:

  1. त्रुटि मेल HTTP मॉड्यूल में ऑनबिल्डिंग ईवेंट जोड़ा गया। घटना के लिए इस तर्क के लिए एक नाम ValueCollection संपत्ति है।
  2. मैंने ऑन-बिल्डिंग ईवेंट को global.asax में संभाला।
  3. चूंकि HttpModules को हमेशा सत्रस्टेट तक पहुंच नहीं है, esp। यदि सत्र लोड होने से पहले अपवाद होता है, तो मैंने उस डेटा की प्रतिलिपि बनाई जिसे मैं एचटीपी अनुप्रयोग कैश (सत्र सत्र द्वारा अनुक्रमित) में रिपोर्ट करना चाहता था।
  4. जब कोई अपवाद होता है तो मैं अनुरोध में संग्रहीत सत्रित (विशेष रूप से, कुकी में) के माध्यम से एप्लिकेशन कैश से डेटा को पकड़ता हूं। मैं इस डेटा से NameValueCollection उत्पन्न करता हूं और इसे ऑनबिल्डिंग तर्कों के माध्यम से httpmodule पर वापस भेजता हूं।
  5. तब डेटा को सर्वर वैरिएबल सेक्शन के समान तरीके से ईमेल करने के लिए प्रस्तुत किया जाता है।