2009-08-18 14 views
13

मैं एक ऐसा एप्लिकेशन चला रहा हूं जिसमें अपने स्वयं के त्रुटि हैंडलर हैं। देव वातावरण में परीक्षण करते समय त्रुटि पृष्ठ ठीक से प्रदर्शित होते हैं (त्रुटि पृष्ठ ठीक से प्रदर्शित होते हैं)।
हालांकि उत्पादन आईआईएस पर एक ही कोड, त्रुटि पृष्ठों को प्रतिस्थापित किया जाता है। समस्या का वर्णन here है।आईआईएस 7.0 कस्टम त्रुटि पेज प्रदर्शित नहीं करता

मुझे आश्चर्य है कि कोड को संशोधित करने के बजाय web.config फ़ाइल में यह सेटिंग्स लिखने का कोई तरीका है।

उत्तर

13

भय सही है (+1), लेकिन इसके अतिरिक्त: आईआईएस 7 में आपके द्वारा लिंक किए गए ब्लॉग पोस्ट और this MSDN article में वर्णित विशेष हैंडलिंग है। यदि आप अपनी कार्रवाई पर हैंडलरर एट्रिब्यूट का उपयोग कर रहे हैं, तो यह आपके लिए पहले से ही किया जा चुका है। यदि नहीं, तो आपको सेट करने की आवश्यकता होगी:

filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; 

... स्वयं।

+0

इस सेटिंग का कारण क्या था? –

+2

जाहिर है, मैं माइक्रोसॉफ्ट के लिए बात नहीं करता हूं। मैं केवल उनकी प्रेरणा पर अनुमान लगा सकता हूं। मेरा जंगली अनुमान यह है कि उपयोगकर्ता वास्तविक त्रुटि संदेशों को "डरावना" मानते हैं। इसलिए, आईई में नकली त्रुटि पेज, और यह सुविधा। इसलिए, शायद, वे पृष्ठ जो आप अपने एमवीसी अनुप्रयोग में प्रदर्शित कर रहे हैं। आपको केवल आईआईएस को बताने की जरूरत है कि आपने पहले ही उपयोगकर्ता के अनुकूल त्रुटि संदेश की आपूर्ति की है, इसलिए इसे परेशान करने की आवश्यकता नहीं है। –

4

अनुप्रयोगों Web.config फ़ाइल में एक सेटिंग डिबग मोड सेट करने के लिए नहीं है:

डिफ़ॉल्ट है:

<customErrors mode="RemoteOnly" /> 

यह सेट करने का प्रयास करने के लिए "बंद" (नोट: मूल्य केस संवेदी है !)

<customErrors mode="Off" /> 

मैं अगर इस सेटिंग IIS7 द्वारा सम्मान किया जाता है यकीन नहीं है, लेकिन जब से तुम तैनात से अपने विकास के वातावरण पर अलग व्यवहार देखते हैं, यह मेरी मुट्ठी अनुमान था। यह जांचने के लिए कि क्या यह मामला है, यदि आप संभावना रखते हैं तो आप अपने नेटवर्क में एक अलग मशीन से अपने देव ऐप को चलाने का प्रयास कर सकते हैं।

+0

मैंने कोशिश की है लेकिन यह काम नहीं किया है। मैंने .config फ़ाइल में कुछ सर्वर सेटिंग्स भी शामिल की लेकिन यह पता चला कि आईआईएस किसी भी तरह उन्हें अनदेखा करता है। –

+0

http://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors –

8

वैसे यह पता चला कि कस्टम पेज दिखाने के लिए आईआईएस 7 को मजबूर करने के लिए निम्नलिखित पंक्तियों को web.config फ़ाइल में जोड़ा जाना चाहिए। system.webServer खंड में

रखें

<httpErrors errorMode="Detailed"> <!-- this is impornant --> 
<!-- Some custom error pages url go here --> 
</httpErrors> 
1

मुझे पता चला <system.webServer> अनुभाग अनुरोध के माध्यम से पारित कर सकते हैं। फिर, मेरा ऐप मेरा कस्टम पेज प्रदर्शित कर सकता है। आप अपने Web.Config में इन पंक्तियों का उपयोग कर सकते हैं:

<system.webServer> 
    <httpErrors existingResponse="PassThrough" /> 
</system.webServer> 

तुम भी विस्तारित संस्करण पढ़ सकते हैं पता करने के लिए What to expect from IIS7 custom error module

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