2010-12-20 18 views
10

मेरी ASP.NET 3.5 वेबसाइट में जो साझा होस्टिंग प्रदाता में प्रकाशित हुआ है, मैं इस तरह मेरी web.config फ़ाइल कॉन्फ़िगर कर दिया है:क्यों web.config में customErrors सेटिंग इस मामले में काम नहीं करती है?

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 
     <error statusCode="403" redirect="AccessDenied.htm"/> 
     <error statusCode="404" redirect="FileNotFound.htm"/> 
    </customErrors> 

तो उपयोगकर्ता अनुरोध पृष्ठों ("www की तरह जो मौजूद नहीं है .example.com/NotExistPage.aspx "), उपयोगकर्ता को उम्मीद के अनुसार FileNotFound.htm पृष्ठ पर रीडायरेक्ट किया जाएगा।

लेकिन उपयोगकर्ता अनुरोध करता है, तो जैसे कुछ पता: .aspx विस्तार के बिना "www.example.com/NotExistDirectory", उपयोगकर्ता का सामना करेंगे आईआईएस 7.5 त्रुटि पृष्ठ:

HTTP त्रुटि 404.0 - नहीं मिला संसाधन जो आप खोज रहे हैं हटा दिया गया है, इसका नाम बदल गया है, या अस्थायी रूप से अनुपलब्ध है।

Detialed त्रुटि जानकारी:

Module IIS Web Core 
Notification MapRequestHandler 
Handler StaticFile 
Error Code 0x80070002 

Requested URL http://www.example.com:80/NotExistDirectory 
Physical Path D:\Websites\example\example.com\wwwroot\NotExistDirectory 
Logon Method Anonymous 
Logon User Anonymous 

यह एक पीले रंग की पृष्ठ उपयोगकर्ता के अनुकूल नहीं है और हम उम्मीद नहीं थी।

मैं सोच रहा हूं कि customeError webconfig में त्रुटि इस प्रकार के पते का समर्थन नहीं करती है या नहीं? मैं इस पीले पृष्ठ को देखने वाले उपयोगकर्ताओं को कैसे रोक सकता हूं।

संपादित करें: डेविड के उत्तर के लिए धन्यवाद, लेकिन मुझे वास्तविक कारण और सही समाधान मिला। कृपया मेरा जवाब देखें।

उत्तर

9

@Mostafa: मैं एक ही समस्या का सामना करना पड़ा। अन्यथा इसकी सिर्फ एक extensionless फ़ाइल

<system.webServer> 
    <httpErrors errorMode="Custom"> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" subStatusCode="-1" prefixLanguageFilePath="" path="/MyErrorPage.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 
    </system.webServer> 
+0

धन्यवाद, यह मेरे लिए काम करता है, मुझे त्रुटि मिल रही थी त्रुटि = "कस्टम" – Raver0124

+0

नए पाठकों के लिए, अंततः मुझे वास्तविक कारण और पूरा समाधान मिला, आप मेरे उत्तर – Mostafa

+0

पर काम नहीं कर सकते, मुझे मिल गया यह xxx.com पृष्ठ नहीं मिला वेब पते के लिए कोई वेबपृष्ठ नहीं मिला: https: //xxx.com/aaaaa HTTP ERROR 404 – Toolkit

1

ऐसा इसलिए है क्योंकि ASP.Net मॉड्यूल कुछ फ़ाइल एक्सटेंशन को संभालने के लिए कॉन्फ़िगर किया गया है। आईआईएस निर्धारित करता है कि .aspx को एएसपी.Net मॉड्यूल द्वारा संभाला जाना चाहिए और उसके बाद web.config (और वास्तव में web.config) में कस्टमर अनुभाग में

चूंकि आपने एक पृष्ठ का अनुरोध किया है जो एएसपी के लिए कॉन्फ़िगर नहीं किया गया है नेट, आईआईएस अनुरोध को पारित किए बिना इसे स्वयं ही संभालता है।

+0

इस समस्या को हल करने के लिए, मुझे एक ही समस्या का सामना करना पड़ता है? –

+2

http://www.braintrove.com/article/46/page/2 - इस आलेख को आज़माएं जो बताएगा कि आईआईएस के लिए कस्टम पेज कैसे कॉन्फ़िगर करें। आप आईआईएस पाइपलाइन पर खुद को ताज़ा करना भी चाहेंगे। –

0

पहले, निर्देशिका यूआरएल स्लेश अनुगामी चयन कर रहे हैं चाहिए,: मुझे पता चला यह web.config फ़ाइल में निम्न जोड़कर हल किया जा सकता। www.mysite.com/NotExistDirectory/
दूसरा, एएसपीनेट आईआईएस मॉड्यूल केवल एएसपी एमआईएमई प्रकारों के लिए हैंडलर है, इसलिए निर्देशिका वेब सर्वर के लिए बचे हुए है। तीसरा, customerror system.web का हिस्सा है ASP.net कॉन्फ़िगरेशन
का हिस्सा है और httperror system.webserver का हिस्सा आईआईएस कॉन्फ़िगरेशन का हिस्सा है।
आईआईएस कॉन्फ़िगरेशन में http मॉड्यूल डिफ़ॉल्ट मानते हैं honperror गैर-मौजूदा निर्देशिका के लिए कस्टम त्रुटि के साथ काम करेगा।

0

यह दिलचस्प है, कुछ सालों बाद मुझे अचानक यह पता चला कि समस्या क्या है।

@ दाऊद समाधान के लिए धन्यवाद, लेकिन कारण और पूर्ण समाधान के रूप में bellow है:

customErrors मोड सेट करने के लिए "On" यह केवल काम करता है जब हम ASP.NET अनुप्रयोग में एक अपवाद मिलता है, हालांकि जब हम कोशिश कर करके nonExistingdirectory या notExsitingStaticResouce तक पहुंचने के लिए, आईआईएस 404 त्रुटि प्रदान करता है और यह आईआईएस द्वारा सीधे एएसपीनेट रनटाइम और सर्वर तक नहीं पहुंचता है।

तो हम Web.config में bellow के रूप में आईआईएस के लिए configuraiton जोड़ने की जरूरत:

<system.webServer> 
    <httpErrors errorMode="Custom"> 
     <remove statusCode="404"/> 
     <error statusCode="404" path="~/404.html" responseMode="File" /> 
    </httpErrors> 
    <system.webServer> 

यह स्थापित करने के लिए responseMode करने के लिए "File", अन्यथा स्थिति कोड स्वचालित रूप से 404 से 200 करने के लिए बदल जाएगा महत्वपूर्ण है। तो ग्राहक परिप्रेक्ष्य से उन्हें वास्तविक 404 स्थिति कोड नहीं मिलता है।