WebAPI:从System.Web.Http.Filters.ActionFilterAttribute获取控制器对象

时间:2018-09-12 11:27:23

标签: c# asp.net-web-api controller action-filter

我想从System.Web.Http.Filters.ActionFilterAttribute调用某些控制器的方法(请注意,它是WebApi,而不是MVC)。

我找到了ControllerDescriptor对象,但是找到了创建新控制器实例的唯一方法,而不是使用current:

var controllerDescriptor = actionContext.ActionDescriptor.ControllerDescriptor;

var controller = (BaseApiController)controllerDescriptor.CreateController(actionContext.Request);
var companyId = controller.GetCompanyIdFromClaims();

是否可以获得控制器的当前实例?

1 个答案:

答案 0 :(得分:1)

您是从操作上下文的控制器上下文中获得的,该上下文具有

public IHttpController Controller { get; set; }

财产

HttpControllerContext.Controller Property

例如:

var controller = (MyControllerType)actionContext.ControllerContext.Controller;