मैं एक MVC3 आधार वेबसाइट विकसित कर रहा हूं और मैं त्रुटियों से निपटने के लिए एक समाधान की तलाश कर रहा हूं और प्रत्येक प्रकार की त्रुटि के लिए रेंडर कस्टम व्यू का उपयोग कर रहा हूं। तो कल्पना कीजिए कि मेरे पास एक "त्रुटि" नियंत्रक है जहां उसकी मुख्य क्रिया "सूचकांक" (सामान्य त्रुटि पृष्ठ) है और इस नियंत्रक के पास उपयोगकर्ता के लिए "हैंडले 500" या "हैंडलेऑशननॉटाउंडाउंड" जैसी त्रुटियों के लिए कुछ और क्रियाएं होंगी।
इसलिए वेबसाइट पर होने वाली प्रत्येक त्रुटि को इस "त्रुटि" नियंत्रक (उदाहरण: "नियंत्रक" या "कार्रवाई" द्वारा नहीं पाया जा सकता है, 500, 404, dbException, आदि)।
मैं वेबसाइट पथ (और मार्ग नहीं) को परिभाषित करने के लिए साइटमैप फ़ाइल का उपयोग कर रहा हूं।
यह प्रश्न पहले से ही उत्तर दिया गया था, यह गेबवेज का उत्तर है
मेरी अंतिम Applicationaiton_error विधि निम्नलिखित है:
protected void Application_Error() {
//while my project is running in debug mode
if (HttpContext.Current.IsDebuggingEnabled && WebConfigurationManager.AppSettings["EnableCustomErrorPage"].Equals("false"))
{
Log.Logger.Error("unhandled exception: ", Server.GetLastError());
}
else
{
try
{
var exception = Server.GetLastError();
Log.Logger.Error("unhandled exception: ", exception);
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception e)
{
//if Error controller failed for same reason, we will display static HTML error page
Log.Logger.Fatal("failed to display error page, fallback to HTML error: ", e);
Response.TransmitFile("~/error.html");
}
}
}