ASP.NET MVC अनुप्रयोगों में web.config फ़ाइल के customErrors
और httpErrors
वर्गों के बीच अंतर क्या है ?
प्रत्येक अनुभाग का उपयोग करने के लिए दिशानिर्देश क्या हैं?
ASP.NET MVC अनुप्रयोगों में web.config फ़ाइल के customErrors
और httpErrors
वर्गों के बीच अंतर क्या है ?
प्रत्येक अनुभाग का उपयोग करने के लिए दिशानिर्देश क्या हैं?
जवाबों:
डिस्क्लेमर: यह मेरे अनुभव से है और तथ्य सिद्ध नहीं है।
दोनों का उपयोग किसी वेबसाइट के लिए एरर हैंडलिंग को परिभाषित करने के लिए किया जाता है, लेकिन अलग-अलग सॉफ्टवेयर अलग-अलग कॉन्फ़िगरेशन तत्वों को संदर्भित करते हैं।
customErrors
विजुअल स्टूडियो डेवलपमेंट सर्वर (उर्फ वीएसडीएस या कैसिनी) द्वारा उपयोग की जाने वाली एक विरासत (पीछे की ओर अनुकूलनीय) तत्व हैं।
httpErrors
नए तत्व हैं जो केवल IIS7 द्वारा उपयोग किए जाते हैं।
यह स्थानीय IIS के बजाय VSDS का उपयोग करते हुए ASP.NET वेबसाइटों को विकसित करते समय संभावित समस्या पर प्रकाश डालता है ।
इसके अलावा, आप इस पोस्ट को संदर्भित करें कि त्रुटि संदेश को IIS7 के साथ कैसे संभालें, यदि आप त्रुटि आउटपुट का पूर्ण नियंत्रण चाहते हैं।
VSDS
- उपयोगcustomErrors
IIS6
- उपयोग करनाcustomErrors
IIS7
- उपयोग करना httpErrors
।और यदि आप के साथ विकसित करते हैं, VSDS
लेकिन प्रकाशित करते हैं IIS7
, तो मुझे लगता है कि आपको दोनों की आवश्यकता होगी।
* अपडेट किया गया 2016
CustomErrors विशेषता का उपयोग तब किया जाता है जब .net कोड एक अपवाद (404, 403, 500 आदि) को फेंक रहा है और httpErrors विशेषता का उपयोग तब किया जाता है जब IIS खुद अपवाद फेंक रहा हो।
इसे सही तरीके से कॉन्फ़िगर करने के लिए बहुत सारे नुकसान हैं। इसलिए यदि आप एक त्वरित उदाहरण की तलाश कर रहे हैं, तो आपके पास सबसे अच्छे 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 त्रुटियों को कस्टम पेज को संभालने देना है। एक मित्र ने ऐसा सेटअप बनाया है, जब मुझे कुछ समय मिलेगा, तो मैं कोड साझा करूंगा।
पृष्ठभूमि
एक अच्छा कस्टम त्रुटि पृष्ठ होगा:
तो हमारे विन्यास में कुछ विकल्पों को स्पष्ट करने के लिए:
<customErrors mode="RemoteOnly"
। आप यहाँ निर्दिष्ट कर सकते हैं: On
, Off
, RemoteOnly
।
On
= हमेशा कस्टम त्रुटि पृष्ठ दिखाएंOff
= हमेशा वास्तविक त्रुटि दिखाएंRemoteOnly
= स्थानीय रूप से त्रुटि दिखाएं, लेकिन दूरस्थ रूप से कस्टम त्रुटि पृष्ठ दिखाएं। इसलिए हम RemoteOnly
कथन 1 के लिए चाहते हैं<customErrors redirectMode="ResponseRewrite"
। आप यहां निर्दिष्ट कर सकते हैं: ResponseRedirect
या ResponseRewrite
। ResponseRedirect
मोड कस्टम त्रुटि पृष्ठ पर त्रुटि पृष्ठ पर पहुंच जाएंगे। लिंक क्रॉलर (SEO) के लिए, इसका परिणाम 302 -> 500 होगा, लेकिन आप लिंक क्रॉलर को 500 त्रुटि प्राप्त करना चाहते हैं।
<httpErrors errorMode="DetailedLocalOnly"
। यह customErrors
मोड के बराबर है। विकल्प है कि आप: Custom
, Detailed
, DetailedLocalOnly
।
एक अच्छा ब्लॉग पोस्ट जिसने मुझे बहुत मदद की है: http://benfoster.io/blog/aspnet-mvc-custom-error-pages
<customErrors>
बनाम <httpErrors>
<customErrors>
<httpErrors>
नोट: यह अब उपयोग करने के लिए आवश्यक नहीं है
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 लिंक को पढ़ें
it's no loger necesary to use customErrors
और प्रशस्ति पत्र के लिए +1 , यह वास्तव में मैं के बाद की जानकारी थी :-)
वेब कॉन्फ़िगरेशन में त्रुटियां अनुभाग कस्टम 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 त्रुटि से निपटने के चेक लिंक के लिए हैं: