2014-10-23 4 views
6

में नियंत्रक में कौन सी एक्शन विधि निष्पादित की जाती है, यह कैसे लॉग इन करें वेबएपीआई में, किसी भी नियंत्रक के लिए एक्शन विधि के नाम को लॉग करने के लिए वैसे भी है जिसे एक्शन फ़िल्टर का उपयोग करके बुलाया या निष्पादित किया जाता है। मैं नीचे दिखाए गए रूटडेटा प्रॉपर्टी का उपयोग कर रहा हूं, लेकिन एक्शन वैल्यू में कोई वैल्यू नहीं है। क्या कोई तरीका है कि मैं फ़िल्टर में कार्रवाई का नाम प्राप्त कर सकता हूं।वेबपै

public class LogActionFilter : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 
    { 
     Log(actionExecutedContext.ActionContext.RequestContext.RouteData); 

     base.OnActionExecuted(actionExecutedContext); 
    } 

    private void Log(System.Web.Http.Routing.IHttpRouteData httpRouteData) 
    { 
     var controllerName = httpRouteData.Values["controller"]; 

     var actionName = httpRouteData.Values["action"]; 

     var message = String.Format("controller:{0}, action:{1}", controllerName, actionName); 

     Debug.WriteLine(message, "Action Filter Log"); 
    } 
} 

उत्तर

2

आप actionExecutedContext.ActionContext.ActionDescriptor.ActionName संपत्ति (स्ट्रिंग) में कार्रवाई का नाम पा सकते हैं।

तुम भी डाल सकता है कि ActionDescriptorReflectedHttpActionDescriptor करने और MethodInfo कि, कहा जाता था तुम सिर्फ स्ट्रिंग नाम से अधिक जानकारी की जरूरत है, तो का एक उदाहरण प्राप्त करते हैं।

var reflectedActionDescriptor = actionExecutedContext.ActionContext.ActionDescriptor 
     as ReflectedHttpActionDescriptor; 
//inspect reflectedActionDescriptor.MethodInfo here 
+0

उत्तर देने के लिए धन्यवाद, फिलिप। – user2813261

संबंधित मुद्दे