0

我有一些代码需要在每个 API 方法被命中之前运行;这方面的逻辑返回一个轻量级对象,它是每个 API 方法的依赖项。

有没有办法在 ActionFilterAttribute (依赖注入)中从 OnActionExecuting 返回一个值,供所有控制器 API 方法共同使用,而无需在每个控制器方法中包含代码?

简而言之,这是我的结构:

Public Class APIRequestValidator
    Inherits System.Web.Http.Filters.ActionFilterAttribute

    Public Overrides Sub OnActionExecuting(ByVal actionContext As HttpActionContext)

可以这样注入 API 控制器:

Namespace Controllers
    <APIRequestValidator>
    Public Class LoginController
        Inherits BaseController

我做了一些研究,发现从 OnActionExecuting 方法中我们可以返回如下响应:

actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.OK, New With {
        .foo= fooobj
    }, actionContext.ControllerContext.Configuration.Formatters.JsonFormatter)

我的问题是:

  1. 如何从主控制器方法中提取 foo ?
  2. 更重要的是,是否有一些可以从控制器方面使用的概念,它不需要在每个 API 方法中使用拦截代码(冗余代码在可维护性方面不是一个好主意!)?基本上,我想从 OnActionExecuting 返回一个对象并将其存储为一个公共属性,供所有 API 方法共同使用。(想到的第一个想法是在构造函数中包含这个逻辑,但事实证明构造函数在 OnActionExecuting 之前运行,这对我不起作用。)
  3. 它是否需要是对象的 JSON 表示?理想情况下,它将是原始类型的对象,项目已经知道并且已经在所有控制器中使用。
4

0 回答 0