जब मेरे एएसपी.नेट एमवीसी 4 एप्लिकेशन में कोई त्रुटि होती है, तो मैं त्रुटि के प्रकार के आधार पर उपयोगकर्ता के लिए एक दृश्य को कस्टमाइज़ करना चाहता हूं। उदाहरण के लिए, पृष्ठ नहीं मिला या अपवाद हुआ है (अपवाद के बारे में कुछ उपयोगकर्ता के अनुकूल विवरण के साथ)। मैंने स्टैक ओवरफ्लो और अन्य ऑनलाइन स्रोतों पर ऐसा करने के अन्य उदाहरणों की जांच की है, लेकिन कोई भी जवाब मेरे लिए काम नहीं कर रहा है।एएसपी.नेट एमवीसी 4 - अपवाद हैंडलिंग काम नहीं कर रहा है
मूल [हैंडलरर] विशेषता वीएस2012 में एमवीसी 4 एप्लिकेशन लक्ष्यीकरण .NET 4.5 के साथ काम नहीं कर रही प्रतीत होती है। यहाँ कोड मेरे घर नियंत्रक में मैं है:
[HandleError]
public ActionResult Index()
{
Response.TrySkipIisCustomErrors = true; //doesn't work with or without this
throw new NullReferenceException("Uh oh, something broke.");
}
यह सिर्फ एक अपवाद फेंक रहा है, और मैं डिफ़ॉल्ट ~/साझा/Error.cshtml दृश्य [HandleError] विशेषता की वजह से लौटा दी की उम्मीद करेंगे, लेकिन मुझे बस एक HTTP 500 आंतरिक सर्वर त्रुटि मिलती है जो दर्शाती है कि पृष्ठ प्रदर्शित नहीं किया जा सका। मैंने अपने web.config की जांच की, और विभिन्न विन्यास अजीब व्यवहार कर रहे प्रतीत होते हैं। अनुभाग में, यह वर्तमान में शामिल हैं:
<customErrors mode="On" />
(मैं defaultRedirect जोड़ने और = "बंद" customErrors मोड के साथ की कोशिश की है और साथ ही, लेकिन वह कोई असर नहीं था ... न तो साझा त्रुटि दृश्य या कस्टमररर व्यू मुझे प्रस्तुत किया जा रहा है। अगर मैं कस्टम एरर मोड को बंद करता हूं, तो मैं अपवाद विवरण को अपेक्षित रूप से देख सकता हूं, इसलिए यह "ओह ओह, कुछ टूटा हुआ" अपवाद ठीक से फेंक रहा है।
मैंने भी कोशिश की है होमकंट्रोलर को ऑनएक्सप्शन हैंडलर जोड़ना, और हालांकि मैं डीबग कर सकता हूं और देख सकता हूं कि ऑनएक्सप्शन इवेंट उठाया जा रहा है, इससे कोई फर्क नहीं पड़ता:
protected override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
filterContext.ExceptionHandled = true;
if (filterContext == null)
{
filterContext.Result = View("CustomError");
return;
}
Exception e = filterContext.Exception;
// TODO: Log the exception here
ViewData["Exception"] = e; // pass the exception to the view
filterContext.Result = View("CustomError");
}
मैं भी एक दृश्य निर्दिष्ट करने के लिए [HandleError] को बदलने की कोशिश की है, लेकिन है कि या तो कुछ भी करने को नहीं लगता है:
[HandleError(View="CustomError")]
किसी भी मदद की बहुत सराहना की जाएगी। अगर आपको और जानकारी चाहिए तो कृपया मुझे बताएं।
का स्टेटस कोड भेजती है भले ही मैं web.config में कहीं भी 'रिमोटऑनली' का उपयोग नहीं कर रहा हूं, मेरा मूल कोड दूरस्थ रूप से काम करता प्रतीत होता है, बस स्थानीय रूप से नहीं! यह मेरे लिए बहुत आश्चर्यजनक है। विचारों को प्रस्तुत करने के लिए मुझे '' अनुभाग में '' अनुभाग में ' ' जोड़ना होगा, लेकिन यह सामान्य लगता है। इससे स्थानीय रूप से डीबग करना मुश्किल हो जाता है, और एक मोड की तरह लगता है क्योंकि 'मोड = रिमोटऑनली' का उपयोग नहीं किया जा रहा है। अगर किसी को पता चलता है कि इसे स्थानीय रूप से काम करने के लिए कैसे प्राप्त किया जाए, तो मुझे बताएं। (मैं इसके लिए एक दूसरा प्रश्न खोल सकता हूं।) –