कस्टमइरर्स तत्व के लिए एमएसडीएन दस्तावेज बताता है कि इसे System.Web.Configuration.CustomErrorsSection द्वारा कार्यान्वित किया गया है। यदि हम उस कक्षा का विश्लेषण करने के लिए रेड गेट के .NET परावर्तक का उपयोग करते हैं, तो हम देख सकते हैं कि फ्रेमवर्क में यह सेटिंग कहां उपयोग की जाती है।
इसका उपयोग System.Web.UI.Page.HandleError और System.Web.HttpResponse.ReportRuntimeError द्वारा किया जाता है।
इनमें से दोनों अंत में कॉलिंग सिस्टम.Web.HttpResponse.RedirectToErrorPage।(इस विधि का नाम भ्रमित है: यह ध्यान रखना महत्वपूर्ण है कि RedirectToErrorPage रीडायरेक्ट मोड सेटिंग को पैरामीटर के रूप में लेता है, इसलिए यदि आप ResponseRewrite का उपयोग कर रहे हैं और वास्तव में कोई रीडायरेक्शन नहीं होता है तो भी कहा जाता है।)
का प्रासंगिक हिस्सा RedirectToErrorPage विधि है: दिन के अंत में यह सिर्फ एक सादे Server.Execute है:
if (redirectMode == CustomErrorsRedirectMode.ResponseRewrite)
{
this.Context.Server.Execute(url);
}
वहाँ त्रुटि हैंडलिंग में प्रतिक्रिया कोड स्थापित करने के लिए किसी भी तरह से होना प्रतीत नहीं होता है। इसलिए यह अपरिहार्य लगता है कि आपको इच्छित HTTP प्रतिक्रिया प्राप्त करने के लिए कोड लिखना होगा।
क्या आप फिर से जांच सकते हैं कि आप एक सादा .html फ़ाइल का उपयोग क्यों करना चाहते हैं? यह त्रुटि प्रबंधन के लिए एक समझदार विकल्प प्रतीत होता है, क्योंकि आप किसी .aspx पृष्ठ के सभी ओवरहेड से गुजरना नहीं चाहते हैं, जिससे कोई और त्रुटि हो सकती है।
लेकिन शायद कुछ मध्यम जमीन है जो एक .html फ़ाइल के रूप में उतनी ही मजबूत होगी?
उदाहरण के लिए, आप एक precompiled HttpHandler बना सकते हैं, इसे URL /500.error पर पंजीकृत करें, और उसके बाद 500.error को अपना डिफ़ॉल्ट रेडियोधर्मी पृष्ठ बनाएं। (यह इसी तरह होगा जैसा ScriptResource.axd काम करता है।) यदि आप अपने मॉड्यूल को डीएलएल में प्रीकंपाइल करते हैं (जैसा कि एक सादे पुराने .axd फ़ाइल से ऑन-द-फ्लाई संकलन के विपरीत), तो आप पाएंगे कि यह उतना ही मजबूत है त्रुटि की स्थिति का चेहरा। अगर आपको कोई त्रुटि आती है जहां यह काम नहीं करेगा, तो एक स्थैतिक। एचटीएमएल फ़ाइल शायद काम नहीं करेगी - ध्यान रखें कि कस्टमइरर्स निर्देश अभी भी हुड के नीचे चल रहे .NET पर निर्भर करता है, और अभी भी StaticFileHandler को सेवा देने के लिए उपयोग करता है आपकी। एचटीएमएल फाइल।
वैकल्पिक रूप से आप अपने आईआईएस आवेदन के सामने एक रिवर्स प्रॉक्सी पर विचार कर सकते हैं जो एप्लिकेशन पूल की विनाशकारी विफलता के बावजूद एक दोस्ताना 500 पेज भी प्रदान करेगा। यह स्थापित करने के लिए और अधिक काम होगा, लेकिन कस्टमइरर्स से भी अधिक मजबूत होगा, उदा। यदि आपका web.config दूषित हो जाता है, यहां तक कि कस्टमर भी काम नहीं करेंगे।
आप एक अच्छा मुद्दा उठाते हैं कि ASP.NET पर निर्भर है। मैं ASP.NET पर निर्भरता प्राप्त करने के लिए 500.html का उपयोग कर रहा था, लेकिन अगर एएसपी.NET उत्तरदायी नहीं है तो यह म्यूट है। मुझे लगता है कि मेरी सबसे अच्छी शर्त में 500.aspx का उपयोग करना है, और ASP.NET नीचे होने पर आईआईएस स्तर पर बैकअप 500.html त्रुटि पृष्ठ कॉन्फ़िगर किया गया है। –
frankadelic