c# - 什么是 OData Controller 生命周期事件 OnExecuting/OnExecuted?

标签 c# asp.net-core odata

为了进行诊断,在 OData Controller 中要覆盖这两个事件的等效操作是什么:

  1. 在操作开始执行之前。
  2. 执行操作

我只能找到一个:

public class BaseODataController : ODataController
{
    public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
    {
        return base.ExecuteAsync(controllerContext, cancellationToken);
    }
}

最重要的是,一旦我们从操作返回控制权,就会应用查询过滤器,在生命周期事件中,我们可以测量诊断:例如方法执行所花费的时间。

最佳答案

首先,您需要定义一个过滤器:

public class SampleActionFilter : Attribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        // do something before the action executes
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        // do something after the action executes
    }
}

然后在 Controller 中应用操作属性:

[Route("api/[controller]")]
[ApiController]
public class FooController : ODataController
{
    [SampleActionFilter]
    [HttpGet("SomeResource")]
    public IActionResult SomeResource()
    {
        return Content("Successful access to resource - header should be set.");
    }
}

您可以查看此链接:https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-2.1

让我知道是否有用。

关于c# - 什么是 OData Controller 生命周期事件 OnExecuting/OnExecuted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52942102/

相关文章:

rest - ASP.NET MVC 4 WebApi : Manually handle OData queries

c# - 在调试 session 之间保留 app.config 中的数据

c# - 我如何启用CAS Dashboard (“/status/dashboard”端点)

c# - 为什么我会收到关于隐藏基类方法的属性的警告 CS0108

c# - 从 OWIN 中间件更改响应对象

c# - 如何在 .NET Core 库中记录 Trace?

c# - ASP.NET Core - 如何检测 IHostedService 是否在运行时崩溃?我可以重新启动它吗?

c# - 如何通过 DesignAutomationV3 (Forge API) Revit 导出 PDF

rest - OData 版本 2 和 3 的差异

c# - 无效操作异常 : Can't use schemaId .。相同的 schemaId 已用于类型