मुझे अपने आप को {stuff} पकड़ (अपवाद ई) {लॉग, अन्य सामान} कोशिश करने के साथ लिखने के तरीके मिलते हैं, इसलिए मैं यह जानने की कोशिश कर रहा था कि मदद करने के लिए एक विशेषता कैसे बनाएं मै बाहर। मैंने निम्नलिखित धागे को बड़े पैमाने पर जांच लिया है, और मुझे काम पर मेरा कार्यान्वयन नहीं मिल रहा है।सी # विशेषता के साथ घूमने के लिए विशेषता
attribute does not seem to act at all
ASP.NET MVC Controller.OnException not being called
.net Attributes that handle exceptions - usage on a property accessor
मेरे उच्च-स्तरीय web.config सेट कर दिया जाता
<customErrors mode="On" defaultRedirect="/error.html"/>
को और मुझे नहीं-डिबग मोड में संकलन कर रहा हूँ। मेरे विशेषता के नीचे है:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class SafeWebMethodAttribute: ActionFilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
filterContext.ThrowIfNull();
if (filterContext.ExceptionHandled)
{
return;
}
Log.LogException(filterContext.Exception);
filterContext.HttpContext.Response.StatusCode = 500;
filterContext.HttpContext.Response.Write(filterContext.Exception);
filterContext.ExceptionHandled = true;
}
}
और मैं इसे यहाँ फोन कर रहा हूँ -
public class Test : Controller { [SafeWebMethod] public ActionResult Test() { throw new ArgumentException("test"); } }
मैं एक ब्रेकपाइंट विशेषता में मारा प्राप्त नहीं कर पा रहे हैं, या अगर मैं बदल इसे दिखाने के लिए स्थिति कोड।
मैंने कोड को [हैंडलरर] विशेषता से भी कॉपी किया है, और वहां कोई ब्रेकपॉइंट नहीं मिल सकता है, इसलिए मुझे लगता है कि यह मेरी कॉन्फ़िगरेशन में कुछ गलत है, लेकिन मैं यह नहीं समझ सकता कि क्या।
किसी भी विचार या विचारों को बहुत
एचएम, MSDN के अनुसार, http://msdn.microsoft.com/en-us/library/system.web.mvc.handleerrorattribute.aspx, HandleError "एक विशेषता का प्रतिनिधित्व करता है जिसका उपयोग एक अपवाद को संभालने के लिए किया जाता है जिसे एक क्रिया विधि द्वारा फेंक दिया जाता है। ", और मुझे वास्तव में संपत्ति एक्सेसर्स के बारे में कुछ भी सख्त नहीं दिखाई देता था। ऐसा कहा जा रहा है, ऐसा इसलिए हो सकता है क्योंकि मेरी "विधि" एक क्रिया विधि नहीं है? – hermitt
मैं एएसपी वेब प्रोग्रामिंग में नहीं हूं लेकिन मुझे लगता है कि एमवीसी नियंत्रक द्वारा बुलाए गए तरीकों के पीछे कोड को क्रिया विधि उलट देता है। मैं आगे मानता हूं कि एमवीसी नियंत्रक अपवाद को पकड़ता है और विधि के अनुसार विधि और फिर प्रक्रियाओं का मूल्यांकन करता है। यह वह पैटर्न है जिसे आप भी उपयोग कर सकते हैं - कॉलर के कैच (..) में एक फ़ंक्शन लिखता है जो गुणों की जांच करता है और तदनुसार कार्य करता है। एचटी मारियो –