Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET核心中使用OnActionExecutionAsync_C#_Asp.net Core - Fatal编程技术网

C# 如何在ASP.NET核心中使用OnActionExecutionAsync

C# 如何在ASP.NET核心中使用OnActionExecutionAsync,c#,asp.net-core,C#,Asp.net Core,如何重写此方法 假设一个这样的继承图 FeatureController : BaseController : Controller { } 我希望在执行之前和执行之后运行代码,并且在FeatureController和BaseController中都这样做 这令人困惑,因为有两件事可以等待 await base.OnActionExecutionAsync(context, next); 及 我只是不清楚如何正确使用这个虚拟机。控制器本身就是Action Fitler的一个实现OnActi

如何重写此方法

假设一个这样的继承图

FeatureController : BaseController : Controller { }
我希望在执行之前和执行之后运行代码,并且在
FeatureController
BaseController
中都这样做

这令人困惑,因为有两件事可以等待

await base.OnActionExecutionAsync(context, next);


我只是不清楚如何正确使用这个虚拟机。

控制器本身就是Action Fitler的一个实现
OnActionExecutionAsync()
next()
在过滤器管道的不同级别上运行:

  • wait base.OnActionExecutionAsync(上下文,下一步)
    将调用父级的
    OnActionExecutionAsync(上下文,下一步)
    ,因此按顺序执行以下操作:
  • 调用OnActionExecuting(executingContext)
  • 调用动作主体
  • 调用OnActionExecuted(executedContext)
  • 等待下一步()将只调用操作体本身

  • 简而言之,它们都调用动作体,但是
    base.OnActionExecutionAsync(ctx,next)
    也将触发钩子(即
    OnActionExecuting(ExecutionCtx)
    OnActionExecuted(executedCtx)

    控制器本身就是动作Fitler的一个实现
    OnActionExecutionAsync()
    next()
    在过滤器管道的不同级别上运行:

    • wait base.OnActionExecutionAsync(上下文,下一步)
      将调用父级的
      OnActionExecutionAsync(上下文,下一步)
      ,因此按顺序执行以下操作:
    • 调用OnActionExecuting(executingContext)
  • 调用动作主体
  • 调用OnActionExecuted(executedContext)
  • 等待下一步()将只调用操作体本身

  • 简言之,它们都调用动作体,但是,
    base.OnActionExecutionAsync(ctx,next)
    也会触发钩子(即
    OnActionExecuting(executingCtx)
    OnActionExecuted(executedCtx)

    ,最后-好,至少到目前为止,我已经使用异步虚拟机来执行I/O和异步工作,然后将任何有趣的结果保存到字段中

    然后我像以前一样使用旧的同步虚拟机。然后,这些字段引用它们在逻辑中需要的任何状态的字段。即使我不确定这是不是正确的方法,也能做到


    作为背景,我要解决的问题是将项目添加到包含主要导航链接的列表中。我希望一些基本的网站范围内的链接进入第一,然后为所要求的页面上下文链接,然后一些更多的网站范围内的链接结束

    一个名副其实的链接三明治。好吃


    可以说,我的解决方案可以通过使用合成而不是继承来改进,也就是说,在我的所有控制器中注入一个三明治制造者(如Breville),并在基本控制器中不包含这一点,从而避免基本-我-基协调。

    最后-好,至少到目前为止,我已经使用异步虚拟机来执行I/O和异步工作,然后将任何有趣的结果保存到字段中

    然后我像以前一样使用旧的同步虚拟机。然后,这些字段引用它们在逻辑中需要的任何状态的字段。即使我不确定这是不是正确的方法,也能做到


    作为背景,我要解决的问题是将项目添加到包含主要导航链接的列表中。我希望一些基本的网站范围内的链接进入第一,然后为所要求的页面上下文链接,然后一些更多的网站范围内的链接结束

    一个名副其实的链接三明治。好吃

    可以说,我的解决方案可以通过使用组合而不是继承来改进,即在我的所有控制器中注入一个三明治制造者(如Breville),并在基本控制器中不使用该方法,从而避免基本-我-基本协调

    await next();