पर लागू होने से रोकें। मैं Alex Beletsky's elmah-mvc NuGet पैकेज का उपयोग कर अपने एमवीसी अनुप्रयोग पर अपवाद लॉगिंग के लिए एल्मा का उपयोग कर रहा हूं।एएसपी.NET एमवीसी ग्लोबल फ़िल्टर को एल्मा एक्शन
एप्लिकेशन कुछ वैश्विक फ़िल्टर पंजीकृत करता है, जिसे प्रत्येक क्रिया पर लागू किया जाता है।
क्या Elmah.Mvc.ElmahController
त्रुटि लॉग पेज (foo.com/elmah
) पर कॉल करते समय उन फ़िल्टरों को लागू करने से रोकने का कोई तरीका है?
नीचे की तरह एक परीक्षण, निश्चित रूप से काम करता है, लेकिन मैं एक और अधिक सुरुचिपूर्ण तरीका ढूंढ रहा हूं जिसमें फ़िल्टर को संशोधित करने में शामिल नहीं होगा (न ही एल्मा/एल्मा एमवीसी से स्रोत कोड)। क्या यह भी संभव है?
public class FooAttribute : FilterAttribute, IActionFilter
{
// ...
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.Controller is ElmahController)
{
return;
}
// do stuff
}
}
मुझे लगता है कि जिम्मेदार बताते हैं can't be added or removed at runtime पता है।
मैं एक नया जहाँ मैं एक अपवर्जन फ़िल्टर जोड़ सकते में
ElmahController
लपेटकर के बारे में सोचा है, लेकिन मुझे यकीन है कि कैसे (यदि संभव हो)web.config
बदलने के लिए इस आवरण को संदर्भित करने के मूल नियंत्रक के बजाय नहीं हूँ। कॉल करने के बजायpublic class MyFilterProvider : IFilterProvider { public IEnumerable<Filter> GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor) { if (controllerContext.Controller is ElmahController) { return Enumerable.Empty<Filter>(); } return ... the collection of your global filters } }
और अपने
Application_Start
में:
इसे जांचें - http: // s tackoverflow.com/questions/9953760/how-to-disable-a-global-filter-in-asp-net-mvc-selectively – malkam
@malkam मुझे यह पता है। समस्या यह है कि इसमें एक विशेषता के साथ कार्रवाई को सजाने में शामिल है, यानी स्पष्ट कारणों से, एल्मा स्रोत कोड को संशोधित करना, जिसे मैं नहीं करना चाहता हूं। –
यह समाधान मेरे लिए इतना भयानक प्रतीत नहीं होता है। मैं शायद इसे सकारात्मक में करूँगा हालांकि: 'अगर (नियंत्रक ElmahController है) {// कोई विशेष कार्रवाई के साथ वापसी – DLeh