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

问题描述 投票:1回答:1

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

我找到了ControllerDescriptor对象,但发现只有这样才能创建新的控制器实例,而不是使用当前:

var controllerDescriptor = actionContext.ActionDescriptor.ControllerDescriptor;

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

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

c# asp.net-web-api controller action-filter
1个回答
1
投票

你从动作上下文的控制器上下文得到它,它有一个

public IHttpController Controller { get; set; }

属性

HttpControllerContext.Controller Property

例如:

var controller = (MyControllerType)actionContext.ControllerContext.Controller;
© www.soinside.com 2019 - 2024. All rights reserved.