首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnActionExecuted在Web API中被调用两次

OnActionExecuted在Web API中被调用两次
EN

Stack Overflow用户
提问于 2013-11-26 22:22:55
回答 4查看 8.7K关注 0票数 14

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

我的filter方法

代码语言:javascript
复制
public class TestFilter: ActionFilterAttribute
{
  public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {

       //do stuff here


    }
}

和我的控制器

代码语言:javascript
复制
[TestFilter]
  public class BaseController : ApiController
{
 public LoginResponseDTO Login(LoginRequestDTO loginRequestDTO)
    {

 //do login stuff
    }

}

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

有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2015-09-26 20:35:33

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

代码语言:javascript
复制
 [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
 public class TestFilter: ActionFilterAttribute

所有的荣誉都归功于他。(注:如果他决定添加评论作为答案,我将删除帖子)

票数 24
EN

Stack Overflow用户

发布于 2017-08-19 06:11:24

对我来说,问题是我调用了/myApi/action,它重定向到/myApi/action/,这导致OnActionExecuted()运行两次。

我过滤掉了OnActionExecuted中filterContext.Result是RedirectResult的位置,因为我当时对运行我的代码不感兴趣。HTTP状态码在两次调用中都显示为200,因此按此过滤将不起作用。

票数 1
EN

Stack Overflow用户

发布于 2021-01-11 08:45:33

如果您已经在Global.asax.cs中注册了自定义过滤器,如下所示:

代码语言:javascript
复制
GlobalConfiguration.Configuration.Filters.Add(new TestFilterAttribute());

请撤消自定义控制器上方的属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20219656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档