OnActionExecuted在Web API中被调用两次

ker*_*efa 13 asp.net-mvc onactionexecuted actionfilterattribute asp.net-web-api

在我的控制器完成OnActionExecuted的操作后,我正在尝试做一些事情.但是该方法被调用两次.

我的过滤方法

public class TestFilter: ActionFilterAttribute
{
  public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {

       //do stuff here


    }
}
Run Code Online (Sandbox Code Playgroud)

和我的控制器

[TestFilter]
  public class BaseController : ApiController
{
 public LoginResponseDTO Login(LoginRequestDTO loginRequestDTO)
    {

 //do login stuff
    }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试这个过滤器时,onActionExecuted方法被调用两次,这导致我在方法中的操作被应用两次到响应.我搜索了一个原因但找不到解决方案.

有任何想法吗?

low*_*cks 20

答案来自上面的@Martijn评论:

 [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
 public class TestFilter: ActionFilterAttribute
Run Code Online (Sandbox Code Playgroud)

所有学分归他所有.(注意:如果他决定将评论添加为答案,我会删除帖子)

  • 就我而言,我只需要添加 [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] 作为从 ActionFilterAttribute 类派生的其余所有内容。 (2认同)