2016-04-17 11 views
2

Ich habe Probleme mit WebAPI-Action-Filter.Web-API-Cusom-Filter Problem

Ich schrieb den folgenden benutzerdefinierten Filter, um einige Logik auf dem HTTP-Anfrage-Header vor dem Ausführen der Controller-Methode durchzuführen.

using System; 
using System.Web.Mvc; 


    namespace WebApi.Filters 
    { 
     public class dataCheck : ActionFilterAttribute 
     { 
      public override void OnActionExecuting(ActionExecutingContext filterContext) 
      { 
       Console.Write("custom filter called"); 
      } 
     } 
    } 

hinzugefügt Dann Filterattribut auf der Controller-Methode

[dataCheck ] 
[HttpGet] 
[Route("GetInfo")] 
public LatestInfo GetInfo() 
{ 

    TestContext context = new TestContext(); 
    LatestInfo latestReleaseInfo = new LatestInfo(); 
    return LatestInfo ; 

} 

Problem: Ich habe Debugger zu meinen benutzerdefinierten Filter und fand es nie aufgerufen wird.

Was ist hier falsch?

Nutze ich den richtigen Filter für meine Logik?

Bitte beraten.

Antwort

1

Sie müssen sicher sein, Ihr Code die ActionFilterAttribute vom System.Web.Http.Filters Namespace verwendet und nicht derjenige von System.Web.Mvc.

0

Karthiks Antwort ist richtig - es gibt ein paar andere Dinge in Ihrer Klasse, die Sie korrigieren sollten.

Ihre Übersteuerungsfunktion sollte eine im Gegensatz zu ActionExecutingContext akzeptieren. Außerdem sollten Sie base.OnActionExecuting(actionContext); am Ende Ihrer Funktion

using System; 
using System.Web.Http.Controllers; 
using System.Web.Http.Filters; 

namespace WebApi.Filters 
{ 
    public class dataCheck : ActionFilterAttribute 
    { 
     public override void OnActionExecuting(HttpActionContext actionContext) 
     { 
      Console.WriteLine("debugger stop here"); 

      // custom filter code 

      base.OnActionExecuting(actionContext); 
     } 
    } 
} 
aufrufen