在我的控制器完成了OnActionExecuted上的操作之后,我正在尝试做一些事情。但是,该方法被调用了两次。
我的filter方法
public class TestFilter: ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
//do stuff here
}
}和我的控制器
[TestFilter]
public class BaseController : ApiController
{
public LoginResponseDTO Login(LoginRequestDTO loginRequestDTO)
{
//do login stuff
}
}当我尝试这个过滤器时,onActionExecuted方法被调用了两次,这导致我在该方法中的操作被应用于响应两次。我寻找了一个原因,但找不到解决方案。
有什么想法吗?
发布于 2015-09-26 20:35:33
答案来自上面的@Martijn评论:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public class TestFilter: ActionFilterAttribute所有的荣誉都归功于他。(注:如果他决定添加评论作为答案,我将删除帖子)
发布于 2017-08-19 06:11:24
对我来说,问题是我调用了/myApi/action,它重定向到/myApi/action/,这导致OnActionExecuted()运行两次。
我过滤掉了OnActionExecuted中filterContext.Result是RedirectResult的位置,因为我当时对运行我的代码不感兴趣。HTTP状态码在两次调用中都显示为200,因此按此过滤将不起作用。
发布于 2021-01-11 08:45:33
如果您已经在Global.asax.cs中注册了自定义过滤器,如下所示:
GlobalConfiguration.Configuration.Filters.Add(new TestFilterAttribute());请撤消自定义控制器上方的属性。
https://stackoverflow.com/questions/20219656
复制相似问题