2010-01-04 12 views
44

मैं अपने एक्शन से 404 या फ़ाइल नॉटफाउंड अपवाद/परिणाम कैसे फेंक सकता हूं और आईआईएस 404 पेज दिखाने के लिए अपने कस्टम एरर कॉन्फ़िगरेशन सेक्शन का उपयोग करने देता हूं?एएसपीनेट एमवीसी में 404 एक्शन्रेसल्ट या अपवाद को फेंकने/वापस करने और आईआईएस को

मैं इतना

<customErrors mode="On" defaultRedirect="/trouble"> 
    <error statusCode="404" redirect="/notfound" /> 
</customErrors> 

एक ActionResult में मेरा पहला प्रयास यह does not काम जोड़ने की कोशिश करता है कि जैसे मेरी customErrors परिभाषित किया है।

public class NotFoundResult : ActionResult { 
    public NotFoundResult() { 

    } 

    public override void ExecuteResult(ControllerContext context) { 
     context.HttpContext.Response.TrySkipIisCustomErrors = false; 
     context.HttpContext.Response.StatusCode = 404; 
    } 
} 

लेकिन यह सिर्फ एक रिक्त पृष्ठ से पता चलता है और मेरे/नहीं पाया पेज

:(

?

उत्तर

128

ASP.NET MVC 3 HttpNotFoundResult कार्रवाई शुरू की मुझे क्या करना चाहिए परिणाम जो प्राथमिकता में http स्थिति कोड के साथ अपवाद को मैन्युअल रूप से फेंकने के लिए प्राथमिकता में उपयोग किया जाना चाहिए। इसे नियंत्रक पर Controller.HttpNotFound विधि के माध्यम से भी वापस किया जा सकता है:

public ActionResult MyControllerAction() 
{ 
    ... 

    if (someNotFoundCondition) 
    { 
     return HttpNotFound(); 
    } 
} 

MVC 3 से पहले आप निम्नलिखित करना था:

throw new HttpException(404, "HTTP/1.1 404 Not Found"); 
+1

कॉल कर सकते हैं इस अवनत था क्योंकि एक हाथ से यह कर नहीं होना चाहिए। जैसा कि किसी अन्य उत्तर में दिखाया गया है HttpNotFound नियंत्रक विधि का उपयोग करें। – xanadont

+8

सच - लेकिन एएसपी.नेट एमवीसी 3 में HttpNotFound पेश किया गया था। यह प्रश्न (और मेरा उत्तर) पूर्व-तिथियां है और पिछले संस्करणों में एक उचित दृष्टिकोण था। मैंने अब एमवीसी 3 में पसंदीदा नए दृष्टिकोण को चित्रित करने के लिए अपना जवाब संपादित कर लिया है। –

+4

रैड। आपको वापस वोट दिया। – xanadont

2

यह रूप में अच्छी तरह मदद कर सकता है;

ASP.NET MVC : Throwing 404 Exceptions Manually From Controller When Model is Null

+0

FYI यह लिंक अब काम नहीं करता है और हटाया जाना चाहिए। – Brandon

+6

यह लिंक सही ढंग से 404 अपवाद प्रदर्शित करता है। –

+0

@ बॉयकोर्डाज़ोव हाहा :) तय! – tugberk

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