CustomErrors और httpErrors में क्या अंतर है?


168

ASP.NET MVC अनुप्रयोगों में web.config फ़ाइल के customErrorsऔर httpErrorsवर्गों के बीच अंतर क्या है ?

प्रत्येक अनुभाग का उपयोग करने के लिए दिशानिर्देश क्या हैं?


1
IMHO - HttpError त्रुटि संदेशों के लिए IIS स्तर हैंडलिंग है, जबकि CustomError ASP है। NET वेब अनुप्रयोग में त्रुटियों के लिए हैंडलिंग। लेकिन अधिक जानना अच्छा लगेगा ...
सनी

जवाबों:


85

डिस्क्लेमर: यह मेरे अनुभव से है और तथ्य सिद्ध नहीं है।

दोनों का उपयोग किसी वेबसाइट के लिए एरर हैंडलिंग को परिभाषित करने के लिए किया जाता है, लेकिन अलग-अलग सॉफ्टवेयर अलग-अलग कॉन्फ़िगरेशन तत्वों को संदर्भित करते हैं।

customErrors विजुअल स्टूडियो डेवलपमेंट सर्वर (उर्फ वीएसडीएस या कैसिनी) द्वारा उपयोग की जाने वाली एक विरासत (पीछे की ओर अनुकूलनीय) तत्व हैं।

httpErrors नए तत्व हैं जो केवल IIS7 द्वारा उपयोग किए जाते हैं।

यह स्थानीय IIS के बजाय VSDS का उपयोग करते हुए ASP.NET वेबसाइटों को विकसित करते समय संभावित समस्या पर प्रकाश डालता है ।

इसके अलावा, आप इस पोस्ट को संदर्भित करें कि त्रुटि संदेश को IIS7 के साथ कैसे संभालें, यदि आप त्रुटि आउटपुट का पूर्ण नियंत्रण चाहते हैं।

सारांश:

  • में विकसित VSDS- उपयोगcustomErrors
  • साइट को प्रकाशित करना IIS6- उपयोग करनाcustomErrors
  • साइट को प्रकाशित करना IIS7- उपयोग करना httpErrors

और यदि आप के साथ विकसित करते हैं, VSDSलेकिन प्रकाशित करते हैं IIS7, तो मुझे लगता है कि आपको दोनों की आवश्यकता होगी।


30
customErrors asp.net के लिए हैं। httpErrors IIS7 के लिए हैं, और इसलिए सामग्री को संभालना जो .net हैंडलर (जैसे .png, .js आदि) से नहीं जाती है। यदि आप गैर-.net सामग्री प्रकारों के लिए त्रुटि पृष्ठ चाहते हैं, तो IIS त्रुटि पेजों का उपयोग करें (IIS7 के लिए httpErrors)। , IIS6 के लिए UI।)
zcrar70

4
मैं डीबगिंग उद्देश्यों के लिए विजुअल स्टूडियो के साथ IIS 7 एक्सप्रेस को स्थापित करने और उपयोग करने की सलाह देता हूं। यह कैसिनी के विपरीत, नियमित IIS 7 के समान कॉन्फ़िगरेशन विकल्पों का उपयोग करेगा।
शॉन

अब @johnB द्वारा customErrors का उपयोग करना आवश्यक नहीं है। और बहुत जरूरी है? 1.) "एएसपी" अनुभाग के तहत "ब्राउज़र में त्रुटियाँ भेजें" सक्षम करें। डीबगिंग गुण 2) "त्रुटि पृष्ठ / फीचर सेटिंग संपादित करें" के तहत, "विस्तृत त्रुटियां" चुनें। 3.) अक्षम IE में 'दोस्ताना HTTP त्रुटि संदेश दिखाएं " stackoverflow.com/questions/2640526/...
Kiquenet

136

* अपडेट किया गया 2016

CustomErrors विशेषता का उपयोग तब किया जाता है जब .net कोड एक अपवाद (404, 403, 500 आदि) को फेंक रहा है और httpErrors विशेषता का उपयोग तब किया जाता है जब IIS खुद अपवाद फेंक रहा हो।

  • / myfakeextensionslessurl -> httpErrors 404
  • /myfakeaspsx.aspx -> customErrors 404
  • /myfakeimage.jpg -> httpErrors 404
  • /throw500.apx -> कस्टमरर्स 500
  • / फेंक 500 -> कस्टमर 500

इसे सही तरीके से कॉन्फ़िगर करने के लिए बहुत सारे नुकसान हैं। इसलिए यदि आप एक त्वरित उदाहरण की तलाश कर रहे हैं, तो आपके पास सबसे अच्छे 2 विकल्प हैं:

उदाहरण 1: HTML पृष्ठों का उपयोग करना

<system.web>
  <customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
    <error statusCode="403" redirect="/Error403.html" />
    <error statusCode="404" redirect="/Error404.html" />
    <error statusCode="500" redirect="/Error500.html" />
  </customErrors>
</system.web>
<system.webServer>
  <httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
    <remove statusCode="403" />
    <remove statusCode="404" />
    <remove statusCode="500" />
    <error statusCode="403" responseMode="File" path="Error403.html" />
    <error statusCode="404" responseMode="File" path="Error404.html" />
    <error statusCode="500" responseMode="File" path="Error500.html" />
  </httpErrors>
</system.webServer>

उदाहरण 2: aspx पृष्ठों का उपयोग करना

<system.web>
  <customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
    <error statusCode="403" redirect="/Error403.aspx" />
    <error statusCode="404" redirect="/Error404.aspx" />
    <error statusCode="500" redirect="/Error500.aspx" />
  </customErrors>
</system.web>
<system.webServer>
  <httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
    <remove statusCode="403" />
    <remove statusCode="404" />
    <remove statusCode="500" />
    <error statusCode="403" responseMode="ExecuteURL" path="Error403.aspx" />
    <error statusCode="404" responseMode="ExecuteURL" path="Error404.aspx" />
    <error statusCode="500" responseMode="ExecuteURL" path="Error500.aspx" />
  </httpErrors>
</system.webServer>

और aspx त्रुटि पृष्ठों में आपको ऐसा कुछ करने की आवश्यकता है (उदाहरण 404 पृष्ठ):

<% 
    Response.StatusCode = 404;
    Response.TrySkipIisCustomErrors = true;
 %>

नोट: CustomErrors सेक्शन में एक्सटेंशन कम यूआरएल का उपयोग संभव नहीं है! (बिना हैक्स के)

चारों ओर एक काम कस्टम त्रुटियों को अक्षम करना है और http त्रुटियों को कस्टम पेज को संभालने देना है। एक मित्र ने ऐसा सेटअप बनाया है, जब मुझे कुछ समय मिलेगा, तो मैं कोड साझा करूंगा।

पृष्ठभूमि

एक अच्छा कस्टम त्रुटि पृष्ठ होगा:

  1. जब आप समस्या पृष्ठ पर स्थानीय रूप से आते हैं तो वास्तविक अपवाद दिखाएं
  2. जब आप समस्या पृष्ठ को दूरस्थ रूप से देखते हैं तो एक कस्टम पृष्ठ दिखाएं
  3. पुनर्निर्देशित नहीं किया जाएगा, लेकिन बस त्रुटि पृष्ठ सामग्री (क्योंकि कारणों के कारण) दिखाओ
  4. सही स्थिति कोड दिखाएगा

तो हमारे विन्यास में कुछ विकल्पों को स्पष्ट करने के लिए:

  1. <customErrors mode="RemoteOnly"। आप यहाँ निर्दिष्ट कर सकते हैं: On, Off, RemoteOnly

    • On = हमेशा कस्टम त्रुटि पृष्ठ दिखाएं
    • Off = हमेशा वास्तविक त्रुटि दिखाएं
    • RemoteOnly= स्थानीय रूप से त्रुटि दिखाएं, लेकिन दूरस्थ रूप से कस्टम त्रुटि पृष्ठ दिखाएं। इसलिए हम RemoteOnlyकथन 1 के लिए चाहते हैं
  2. <customErrors redirectMode="ResponseRewrite"। आप यहां निर्दिष्ट कर सकते हैं: ResponseRedirectया ResponseRewriteResponseRedirectमोड कस्टम त्रुटि पृष्ठ पर त्रुटि पृष्ठ पर पहुंच जाएंगे। लिंक क्रॉलर (SEO) के लिए, इसका परिणाम 302 -> 500 होगा, लेकिन आप लिंक क्रॉलर को 500 त्रुटि प्राप्त करना चाहते हैं।

  3. <httpErrors errorMode="DetailedLocalOnly"। यह customErrorsमोड के बराबर है। विकल्प है कि आप: Custom, Detailed, DetailedLocalOnly

एक अच्छा ब्लॉग पोस्ट जिसने मुझे बहुत मदद की है: http://benfoster.io/blog/aspnet-mvc-custom-error-pages


किस प्रकार के रिलेशन रिवाज - httpErrors और IIS कॉन्फिगरेशन जैसे "ASP में ब्राउज़र को एरर्स भेजें" - डिबगिंग प्रॉपर्टीज और "एरर पेज / एडिट फीचर सेटिंग", "विस्तृत एरर"। ? stackoverflow.com/questions/2640526/…
Kiquenet

36

<customErrors> बनाम <httpErrors>


<customErrors>

  • अभी भी IIS7 + में उपलब्ध है
  • ASP.NET द्वारा प्रबंधित अनुरोधों के लिए कस्टम त्रुटि पृष्ठ निर्दिष्ट करें
  • ASP.NET अनुप्रयोग के भीतर केवल अनुरोधों को संभालता है
  • HTML फ़ाइलों या निर्देशिका ("अनुकूल") URL जैसी स्थिर फ़ाइलों को संभाला नहीं जाता है

<httpErrors>

  • IIS7 में पेश किया गया
  • IIS द्वारा प्रबंधित अनुरोधों के लिए कस्टम त्रुटि पृष्ठ निर्दिष्ट करें
  • ASP.NET अनुप्रयोग के भीतर अनुरोधों को संभालता है और / - ASP.NET अनुप्रयोग के बाहर अनुरोधों को संभालता है *
  • सभी फ़ाइलों और URL को संभाला जाता है *

नोट: यह अब उपयोग करने के लिए आवश्यक नहीं है customErrors

उद्धृत स्रोत: ASP.NET में कस्टम 404 और त्रुटि पृष्ठ (उत्कृष्ट लेख)


ExecuteURLएक .aspx पृष्ठ जैसे गतिशील सामग्री परोसता है ( pathमान सर्वर रिलेटिव URL होना चाहिए ):

<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" >
    <remove statusCode="404"/>
    <error statusCode="404" responseMode="ExecuteURL" path="/error.aspx" />
  </httpErrors>
</system.webServer>

File एक कस्टम त्रुटि फ़ाइल प्रदान करता है, जैसे कि .html पेज:

<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="File" >
    <remove statusCode="404"/>
    <error statusCode="404" path="404.html" />
  </httpErrors>
</system.webServer>

संदर्भ: HTTP त्रुटियां (www.iis.net)

अधिक जानकारी के लिए, ऊपर दिए गए www.iis.net लिंक को पढ़ें


हो सकता है कि उपयोगी ** stackoverflow.com/questions/2640526/… ** अगर httpErrors को "ब्राउज़र में त्रुटियाँ भेजें" और त्रुटि पृष्ठों के
Kiquenet

3
नोट it's no loger necesary to use customErrorsऔर प्रशस्ति पत्र के लिए +1 , यह वास्तव में मैं के बाद की जानकारी थी :-)
मिस्टर

4

वेब कॉन्फ़िगरेशन में त्रुटियां अनुभाग कस्टम http त्रुटि हैंडलिंग दृष्टिकोण प्रदान करने के लिए है, दो खंड हैं, एक customErrors अनुभाग system.web के अंदर और दूसरा httpErrors अनुभाग system.webServer (नीचे दिए गए अनुसार)

customErrors: IIS 7 पेश करने से पहले, IIS 6 5 से पहले और HTTP स्थिति कोड के अनुसार कस्टम http त्रुटियों से निपटने के लिए इस अनुभाग का पूरी तरह से उपयोग करने से पहले यह अनुभाग उपयोग में था।

httpErrors: IIS 7 और बाद में इस खंड के साथ-साथ customErrors खंड का उपयोग उनकी फ़ाइल एक्सटेंशन के आधार पर कस्टम http त्रुटियों को संभालने के लिए किया जाता है, यदि अनुरोधित पेज एक्सटेंशन रजिस्टर ISAPI dll (.aspx, ashx, .asmx, .svc आदि) के साथ index.aspx की तरह होता है। IIS customeErrors अनुभाग से सेटिंग उठाता है अन्यथा यह httpErrors से सेटिंग करता है (IIS 7 होस्टेड मोड को एकीकृत मूड के रूप में सेट किया जाना चाहिए क्लासिक नहीं)

नीचे दिए गए उदाहरण हैं जो 404 त्रुटि से निपटने के चेक लिंक के लिए हैं:

वेबपोर्फ़, iis, asp.net में कस्टमर बनाम कैंटरर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.