2011-06-28 19 views
5

एएसपी.नेट एमवीसी 3 में कस्टम त्रुटि पेज बनाने का सबसे अच्छा तरीका क्या है? जिसकी मुझे विशेष रुचि है वह 404 त्रुटि है, लेकिन 403 और अन्य भी है। मैं एमवीसी ढांचे के लिए नया हूं, परंपरागत रूप से मैं एक PHP पृष्ठभूमि से आया हूं, लेकिन जल्दी से सीख रहा हूं।एएसपी.नेट एमवीसी 3 में कस्टम 404 त्रुटि पेज कैसे बनाएं?

मैंने किया था इस प्रश्न पोस्ट करने से पहले अपने अनुसंधान और इस लिंक भर में आया था: Custom error pages on asp.net MVC3

समाधान सरल लगता है यही कारण है कि हालांकि जब मुझे लगता है कि लागू करने के लिए मेरी मशीन पर कोशिश, मैं निम्न पंक्ति के साथ एक समस्या मिलती है: IController errorsController = नए त्रुटियों नियंत्रक(); Application_Error() फ़ंक्शन के अंदर। इसे कहते हैं "प्रकार या नाम स्थान का नाम 'ErrorsController' नहीं पाया जा सका (यदि आप एक का उपयोग कर के निर्देश या एक विधानसभा संदर्भ याद कर रहे हैं?"।

मदद उपलब्ध करा सकता के लिए अग्रिम धन्यवाद।

+0

संभावित डुप्लिकेट [मैं एएसपी.नेट एमवीसी में 404 को कैसे ठीक से संभाल सकता हूं?] (Http://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net -mvc) –

उत्तर

15

आप कॉन्फ़िगर करना चाहिए अपने web.config फ़ाइल में

<httpErrors> 

धारा के तहत

<system.webServer> 

अनुभाग समूह।

+०१२३५१६४१०६१

इस लेख का संदर्भ लें:

http://www.iis.net/ConfigReference/system.webServer/httpErrors

साथ ही आप त्रुटि नियंत्रक जो आप अपने प्रश्न में जुड़े हुए हैं, हालांकि प्रारंभिक प्रवाह आईआईएस द्वारा प्रबंधित किया जाना चाहिए उपयोग कर सकते हैं। इस खंड से आप आईआईएस को निर्देश दे सकते हैं कि इसे आपके नियंत्रक द्वारा प्रबंधित यूआरएल निष्पादित करना चाहिए।

कृपया अपने कंट्रोलर के कार्यों में उचित प्रतिक्रिया। स्टेटस प्रॉपर्टी स्ट्रिंग के बारे में सावधानी बरतें क्योंकि प्रस्तावित समाधान रिटर्न "200 ओके" है जो ब्राउज़र के लिए भ्रमित हो सकता है। उदाहरण

public class ErrorsController : Controller 
{ 
    public ActionResult NotFound() 
    { 
     Response.Status = "404 Not Found"; 
     return View(); 
    } 

    public ActionResult ServerError() 
    { 
     byte[] delay = new byte[1]; 
     RandomNumberGenerator prng = new RNGCryptoServiceProvider(); 

     prng.GetBytes(delay); 
     Thread.Sleep((int)delay[0]); 

     IDisposable disposable = prng as IDisposable; 
     if (disposable != null) { disposable.Dispose(); } 
     Response.Status = "500 Internal Server Error"; 
     return View(); 
    } 

} 

विन्यास उदाहरण के लिए:

<httpErrors defaultPath="/error.htm" errorMode="Custom" existingResponse="Replace" defaultResponseMode="ExecuteURL"> 
     <remove statusCode="500" subStatusCode="-1" /> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="500" path="/errors/servererror/" responseMode="ExecuteURL" /> 
     <error statusCode="404" path="/errors/notfound/" responseMode="ExecuteURL" /> 
    </httpErrors> 

आप "subStatusCode" विशेषता का उपयोग 404.3 और अन्य नियंत्रित कर सकते हैं।

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