2012-11-28 42 views
3

我正在寫一個ASP.NET WEB API。在Web APi中的每個動作之後觸發某個方法

執行Action後,我想調用一個方法。

例如:

public string Action1(object a) 
{ 
    // ... 
    // call method1(); 
    return "sample1"; 
} 

public string Action2(object b) 
{ 
    // ... 
    // call method1(); 
    return "sample2"; 
} 

有沒有辦法來調用每一個動作method1()沒有每一個動作提?

回答

7

你可以實現一個自定義的System.Web.Http.Filters.ActionFilterAttribute並調用method1()OnActionExecuted(...)

public class MyActionFilter : System.Web.Http.Filters.ActionFilterAttribute 
{ 
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 
    { 
     // call method1(); 
     // ... 
     base.OnActionExecuted(actionExecutedContext); 
    } 
} 

然後,您可以在操作使用此[MyActionFilter],在控制器上,或者在WebApiConfig.cs添加到全局配置:

 config.Filters.Add(new MyActionFilter()); 
+0

我想操作代碼想要在執行操作後執行一段代碼。因此,'ActionFilterAttribute'的'OnActionExecuted'方法會更適合這裏。 – tugberk

+0

@tugberk - thx的更正。我已經相應地更新了我的答案。 –

相關問題