c# - WebAPI : Get controller object from System. Web.Http.Filters.ActionFilterAttribute

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

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

我找到了 ControllerDescriptor 对象,但找到了创建新 Controller 实例的唯一方法,而不是使用当前:

var controllerDescriptor = actionContext.ActionDescriptor.ControllerDescriptor;

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

是否可以获取 Controller 的当前实例?

最佳答案

您可以从操作上下文的 Controller 上下文中获取它,该上下文有一个

public IHttpController Controller { get; set; }

属性

HttpControllerContext.Controller Property

例如:

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

关于c# - WebAPI : Get controller object from System. Web.Http.Filters.ActionFilterAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52294059/

相关文章:

c# - ASP MVC - 使用时区和文化处理日期时间本地化

asp.net-web-api - AngularJS + ASP.NET Web API 跨域问题

controller - AngularJS:在不完全重新加载 Controller 的情况下更改哈希和路由

ios - 将数据从 View Controller 传递到第一个细节 Controller ,然后传递到第二个细节 Controller

ruby-on-rails - 如何在 Rails 中异步执行 Controller.destroy 操作?

c# - 在 MVC 2 中使用 Html.EditorFor 时如何设置字段的出现顺序?

c# - 在 Picturebox 上显示从相机检索到的位图的实验

c# - 全局 Windows 按键

c# - 将 ASP.NET WebAPI Minimal 中的 Program.cs 与 Startup.cs 分开以进行集成测试

c# - 验证在单元测试中失败