【问题标题】:how filters short-circuit request pipeline?如何过滤短路请求管道?
【发布时间】:2023-04-08 03:10:01
【问题描述】:

我是 ASP.NET Core MVC 的新手,只是关于如何过滤短路请求管道的问题。我知道设置过滤器的 context.Result 将绕过/短路请求管道。下面是我教科书中的截图:

假设我在动作过滤器中有以下语句:

public void OnActionExecuting(ActionExecutingContext context)
{
   context.Result = new StatusCodeResult(StatusCodes.Status403Forbidden);
}

我的问题是:

Q1-这意味着动作方法不会被调用,但它实际上是如何发生的,必须有某事检查context.Result以确定是否应该调用动作方法。那这是什么东西?

Q2- 在请求被短路后,结果过滤器是否仍然适用?

Q3- 如果结果过滤器不适用,如何调用 IActionResult Execution?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc


    【解决方案1】:

    这清楚地表明设置Result 会使动作和管道短路,这样就没有其他动作过滤器可以运行:

    在动作过滤器内将 Result 设置为非空值将使动作和任何剩余的动作过滤器短路。

    现在,仅当操作方法(或操作过滤器)产生结果时才调用 IResultFilterIAsyncResultFilter,在您的情况下是正确的。如果您的操作方法或操作过滤器出现异常,则不会调用它们。见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-19
      • 2021-06-12
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      相关资源
      最近更新 更多