दिलचस्प पोस्ट
आप एक regex कैसे डीबग करते हैं? मैक ओएस एक्स 10.8 / एक्सकोड 4.4 पर जीसीसी का उपयोग कैसे करें खिड़कियों और मैक पर @ फ़ॉन्ट-चेहरे एंटी-अलियासिंग जावास्क्रिप्ट – कैसे पता लगाया गया है कि दस्तावेज़ लोड हो रहा है (IE 7 / Firefox 3) बंडलर अलग प्लेटफार्मों के लिए अलग रत्नों का उपयोग करें सभी फ़ाइलों को यूटिफ़ -8 के रूप में विजुअल स्टूडियो प्रोजेक्ट में सहेजें अपाचे को www से www से पुनर्निर्देशित करें क्यों PHP चर एक $ चिह्न प्रतीक के साथ शुरू करते हैं? आर में हिस्टोग्राम के लिए एक घनत्व वक्र फिटिंग करना अद्वितीय पंक्तियों, आरओ में दो कॉलमों पर विचार करने के बिना तर्क प्रकार के आधार पर __init__ पद्धति को अधिभार कैसे करें? एक्सकोड / आईफ़ोन में असम्बद्ध अपवाद के बारे में स्टैक ट्रेस या अधिक जानकारी गोलाकार कोनों और पारदर्शिता के साथ सीमा PySpark DataFrames – पांडों को परिवर्तित किए बिना गणना करने का तरीका? एंड्रॉइड – इयरपीस के माध्यम से खेलने के लिए ऑडियो प्राप्त करना

कस्टम asp.NET MVC 404 त्रुटि पृष्ठ के लिए रूटिंग

मैं किसी कस्टम HTTP 404 त्रुटि पृष्ठ को बनाने की कोशिश कर रहा हूं जब कोई ऐसे URL में टाइप करता है जो ASP.NET MVC में कोई मान्य कार्यवाही या नियंत्रक का उपयोग न करें, इसके बजाय सामान्य "संसाधन नहीं मिला" ASP.NET त्रुटि प्रदर्शित करने के बजाय

मैं इसे संभाल करने के लिए web.config का उपयोग नहीं करना चाहता।

क्या किसी तरह के अनुमार्गण जादू है जो मैं किसी अवैध यूआरएल को पकड़ने के लिए कर सकता हूं?

अद्यतन: मैंने दिए गए उत्तर की कोशिश की, हालांकि मुझे अभी भी बदसूरत "संसाधन नहीं मिला" संदेश मिलता है।

एक और अद्यतन: ठीक है, जाहिरा तौर पर कुछ आरसी 1 में बदल गया। मैंने भी HttpException पर विशेष रूप से 404 फँसाने की कोशिश की है और यह अभी भी मुझे "संसाधन नहीं मिला" पृष्ठ देता है

मैंने भी MvcContrib संसाधन की सुविधा और कुछ भी नहीं – एक ही समस्या का उपयोग किया है कोई विचार?

वेब के समाधान से एकत्रित समाधान "कस्टम asp.NET MVC 404 त्रुटि पृष्ठ के लिए रूटिंग"

बस रूट तालिका के अंत में सभी मार्गों को जोड़ने और उस पृष्ठ को आप जो भी चाहते हैं उसे प्रदर्शित करें।

देखें: मैं एएसपी.नेट एमवीसी के लिए '404 पृष्ठ नहीं मिला' प्रश्नों को कैसे संभाल सकता हूं?

मैंने 3 घंटे के लिए उत्पादन सर्वर पर कस्टम त्रुटियों को सक्षम करने की कोशिश की है, मुझे लगता है कि अंतिम समाधान यह है कि एएसपी.नेट एमवीसी में बिना किसी मार्ग के कैसे करना है।

ASP.NET MVC अनुप्रयोग में हमें कस्टम त्रुटियों को सक्षम करने के लिए (IIS 7+):

  1. system.web अनुभाग में वेब कॉन्फ़िगरेशन में कस्टम पेज कॉन्फ़िगर करें:

     <customErrors mode="RemoteOnly" defaultRedirect="~/error"> <error statusCode="404" redirect="~/error/Error404" /> <error statusCode="500" redirect="~/error" /> </customErrors> 

    RemoteOnly मतलब है कि स्थानीय नेटवर्क पर आप असली त्रुटियां देखेंगे (विकास के दौरान बहुत उपयोगी)। हम किसी भी त्रुटि कोड के लिए त्रुटि पृष्ठ भी लिख सकते हैं।

  2. मैजिक प्रतिक्रिया पैरामीटर और प्रतिक्रिया स्थिति कोड (त्रुटि संभाल मॉड्यूल या त्रुटि संभाल विशेषता में) सेट करें

      HttpContext.Current.Response.StatusCode = 500; HttpContext.Current.Response.TrySkipIisCustomErrors = true; 
  3. system.webServer अनुभाग में वेब कॉन्फ़िग में एक अन्य जादू सेटिंग सेट करें:

     <httpErrors errorMode="Detailed" /> 

यह अंतिम चीज है जो मैंने पाया है और उसके बाद मैं उत्पादन सर्वर पर कस्टम त्रुटियों को देख सकता हूँ

मुझे एक ErrorController बनाकर काम करने के लिए मेरी त्रुटि हैंडलिंग है जो इस आलेख में दिए गए दृश्यों को देता है मुझे वैश्विक में भी "कैच ऑल" को जोड़ना पड़ा।

मैं नहीं देख सकता कि यह कैसे इन त्रुटि पृष्ठों में से किसी को मिलेगा यदि यह वेब। कॉन्फ़िग में नहीं है ..? मेरी वेब। कॉन्फ़िग को निर्दिष्ट करना था:

 customErrors mode="On" defaultRedirect="~/Error/Unknown" 

और फिर मैंने यह भी कहा:

 error statusCode="404" redirect="~/Error/NotFound" 

उम्मीद है की यह मदद करेगा।

स्रोत

NotFoundMVC – उपयोगकर्ता के अनुकूल 404 पृष्ठ प्रदान करता है जब भी आपके एएसपी। नेट MVC3 अनुप्रयोग में एक नियंत्रक, क्रिया या मार्ग नहीं मिलते। नॉर्टफाउंड नामक एक दृश्य डिफ़ॉल्ट एएसपी.नेट त्रुटि पेज के बजाए रेंडर किया गया है।

आप इस प्लगइन को नूगेट के माध्यम से जोड़ सकते हैं: Install-Package NotFoundMvc

NotFoundMvc स्वचालित रूप से वेब अनुप्रयोग स्टार्ट-अप के दौरान स्वतः स्थापित हो जाता है यह सभी अलग-अलग तरीकों को संभालता है जो 404 एचटीटीपीएक्साशन आमतौर पर एएसपी.नेट एमवीसी द्वारा फेंक दिया जाता है। इसमें एक लापता नियंत्रक, क्रिया और मार्ग शामिल है

कदम स्थापना गाइड द्वारा कदम:

1 – अपने प्रोजेक्ट पर राइट क्लिक करें और प्रबंधित करें Nuget संकुल को …

2 – NotFoundMvc खोज करें और इसे स्थापित करें। यहां छवि विवरण दर्ज करें

3 – एक बार स्थापना पूरी हो जाने के बाद, दो फाइलें आपकी परियोजना में जोड़ दी जाएंगी। जैसा नीचे दिए गए स्क्रीनशॉट में दिखाया गया है।

यहां छवि विवरण दर्ज करें

4 – दृश्य / साझा में नए जोड़े गए NotFound.cshtml उपस्थित को खोलें और इसे आपकी इच्छा पर संशोधित करें। अब एक गलत यूआरएल में आवेदन और प्रकार चलाएं, और आपको उपयोगकर्ता के अनुकूल 404 पेज के साथ स्वागत किया जाएगा।

यहां छवि विवरण दर्ज करें

और नहीं, उपयोगकर्ताओं को त्रुटि संदेश जैसे Server Error in '/' Application. The resource cannot be found. मिलती है Server Error in '/' Application. The resource cannot be found.

उम्मीद है की यह मदद करेगा 🙂

पीएस: इस तरह के एक भयानक प्लगइन बनाने के लिए एंड्रयू डेवी को यश।

IIS त्रुटि पृष्ठों को बदलने के लिए web.config में इसे आज़माएं। यह मेरा सबसे अच्छा उपाय है, और यह सही स्थिति कोड भी भेजता है I

 <system.webServer> <httpErrors errorMode="Custom" existingResponse="Replace"> <remove statusCode="404" subStatusCode="-1" /> <remove statusCode="500" subStatusCode="-1" /> <error statusCode="404" path="Error404.html" responseMode="File" /> <error statusCode="500" path="Error.html" responseMode="File" /> </httpErrors> </system.webServer> 

Tipila से अधिक जानकारी – कस्टम त्रुटि पृष्ठों का उपयोग करें एएसपी न्यूट MVC

इस समाधान को web.config फ़ाइल परिवर्तनों की आवश्यकता नहीं है या सभी-मार्गों को पकड़ने की आवश्यकता नहीं है।

सबसे पहले, इस तरह एक नियंत्रक बनाएँ;

 public class ErrorController : Controller { public ActionResult Index() { ViewBag.Title = "Regular Error"; return View(); } public ActionResult NotFound404() { ViewBag.Title = "Error 404 - File not Found"; return View("Index"); } } 

फिर "दृश्य / त्रुटि / अनुक्रमणिका.cshtml" के अंतर्गत दृश्य बनाएं;

  @{ Layout = "~/Views/Shared/_Layout.cshtml"; } <p>We're sorry, page you're looking for is, sadly, not here.</p> 

फिर नीचे के रूप में वैश्विक एएसएक्स फ़ाइल में निम्नलिखित जोड़ें:

 protected void Application_Error(object sender, EventArgs e) { // Do whatever you want to do with the error //Show the custom error page... Server.ClearError(); var routeData = new RouteData(); routeData.Values["controller"] = "Error"; if ((Context.Server.GetLastError() is HttpException) && ((Context.Server.GetLastError() as HttpException).GetHttpCode() != 404)) { routeData.Values["action"] = "Index"; } else { // Handle 404 error and response code Response.StatusCode = 404; routeData.Values["action"] = "NotFound404"; } Response.TrySkipIisCustomErrors = true; // If you are using IIS7, have this line IController errorsController = new ErrorController(); HttpContextWrapper wrapper = new HttpContextWrapper(Context); var rc = new System.Web.Routing.RequestContext(wrapper, routeData); errorsController.Execute(rc); } 

यदि आप अभी भी कस्टम IIS त्रुटि पृष्ठ प्राप्त करने के बाद प्राप्त करते हैं, तो सुनिश्चित करें कि वेब कॉन्फ़िग फ़ाइल में निम्नलिखित अनुभागों को (या खाली) टिप्पणी की गई है:

 <system.web> <customErrors mode="Off" /> </system.web> <system.webServer> <httpErrors> </httpErrors> </system.webServer> 

यदि आप एमवीसी 4 में काम करते हैं, तो आप इस समाधान को देख सकते हैं, यह मेरे लिए काम किया है

अपने Global.asax को निम्न Application_Error विधि जोड़ें:

 protected void Application_Error(object sender, EventArgs e) { Exception exception = Server.GetLastError(); Server.ClearError(); RouteData routeData = new RouteData(); routeData.Values.Add("controller", "Error"); routeData.Values.Add("action", "Index"); routeData.Values.Add("exception", exception); if (exception.GetType() == typeof(HttpException)) { routeData.Values.Add("statusCode", ((HttpException)exception).GetHttpCode()); } else { routeData.Values.Add("statusCode", 500); } IController controller = new ErrorController(); controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData)); Response.End(); 

नियंत्रक ही वास्तव में सरल है:

 public class ErrorController : Controller { public ActionResult Index(int statusCode, Exception exception) { Response.StatusCode = statusCode; return View(); } } 

GitHub पर Mvc4CustomErrorPage का पूरा स्रोत कोड जांचें

मेरे पास एक ही समस्या थी, जो आपको करना है, यह है कि आप अपने दृश्य फ़ोल्डर में वेब। कॉन्फिग फ़ाइल में कस्टमएरर्स विशेषता को जोड़ने के बजाय, आपको इसे अपनी प्रोजेक्ट्स रूट फ़ोल्डर में web.config फ़ाइल में जोड़ना होगा।

यह सही उत्तर है जो एक ही स्थान पर त्रुटि पेज की पूरी तरह से अनुकूलित करता है। Web.config को संशोधित करने या अलग कोड बनाने की आवश्यकता नहीं है

एमवीसी 5 में भी काम करता है

इस कोड को नियंत्रक में जोड़ें:

  if (bad) { Response.Clear(); Response.TrySkipIisCustomErrors = true; Response.Write(product + I(" Toodet pole")); Response.StatusCode = (int)HttpStatusCode.NotFound; //Response.ContentType = "text/html; charset=utf-8"; Response.End(); return null; } 

http://www.eidias.com/blog/2014/7/2/mvc-custom-error-pages पर आधारित