2008-08-21 11 views
18

मैं उस अपवाद को कैप्चर करने में सक्षम होना चाहता हूं जो उपयोगकर्ता द्वारा मौजूद एक मौजूदा नियंत्रक का अनुरोध करता है और इसे 404 पृष्ठ पर फिर से निर्देशित करता है। मैं यह कैसे कर सकता हूँ?अपवाद फेंकने के बजाय मैं उपयोगकर्ता को एएसपी.नेट एमवीसी में कस्टम 404 पेज पर रीडायरेक्ट कैसे करूं?

उदाहरण के लिए, उपयोगकर्ता http://www.nosite.com/paeges/1 (/pages/ होना चाहिए) अनुरोध करता है। मैं इसे कैसे बना सकता हूं ताकि वे अपवाद स्क्रीन के बजाय 404 पर फिर से निर्देशित हो जाएं?

उत्तर

6

किसी निर्दिष्ट पृष्ठ पर अपनी 404-त्रुटियों को रूट करने के लिए this page पर एक नज़र डालें।

+2

आप जवाब अद्यतन करने के लिए उस में प्रासंगिक विवरण शामिल कर सकते हैं। – jgauffin

16

बस एक मार्ग का उपयोग करें:

// We couldn't find a route to handle the request. Show the 404 page. 
routes.MapRoute("Error", "{*url}", 
    new { controller = "Error", action = "404" } 
); 

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

+6

क्या यह सही है? क्योंकि निश्चित रूप से यदि मैं {नियंत्रक}/{action}/{id} के लिए एक मार्ग परिभाषित करता हूं, तो कहता है, और उपयोगकर्ता यूआरएल को एक नियंत्रक के साथ प्रवेश करता है जो अस्तित्व में नहीं है तो यह पीले रंग की स्क्रीन होगी क्योंकि पहला मार्ग मेल होगा और आपका पकड़ो सभी कभी नहीं पहुंचेगा? – jmcd

+0

मैंने अभी यह कोशिश की है, और अभी भी डिफ़ॉल्ट पीले-स्क्रीन 404 प्राप्त करें। –

+1

यह काम करता है, लेकिन इसका मतलब है कि आपके पास अपने सभी नियंत्रकों के लिए मैन्युअल मार्ग होना चाहिए, यानी कोई '{नियंत्रक}/{action}/{id } 'इसके बदले आपको' होम/{एक्शन}/{आईडी} ',' खाता/{एक्शन}/{आईडी} ', आदि –