C# 什么是OData控制器生命周期事件OneExecuting/OneExecuted?
为了进行诊断,在OData控制器中,要覆盖这两个事件的等效操作是什么:C# 什么是OData控制器生命周期事件OneExecuting/OneExecuted?,c#,asp.net-core,odata,C#,Asp.net Core,Odata,为了进行诊断,在OData控制器中,要覆盖这两个事件的等效操作是什么: [Route("api/[controller]")] [ApiController] public class FooController : ODataController { [SampleActionFilter] [HttpGet("SomeResource")] public IActionResult SomeResource() { return Content
[Route("api/[controller]")]
[ApiController]
public class FooController : ODataController
{
[SampleActionFilter]
[HttpGet("SomeResource")]
public IActionResult SomeResource()
{
return Content("Successful access to resource - header should be set.");
}
}
public class BaseODataController : ODataController
{
public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
{
return base.ExecuteAsync(controllerContext, cancellationToken);
}
}
公共类BaseODataController:ODataController
{
公共覆盖任务ExecuteAsync(HttpControllerContext controllerContext,CancellationToken CancellationToken)
{
返回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
}
}
然后在控制器中为操作应用属性:
[Route("api/[controller]")]
[ApiController]
public class FooController : ODataController
{
[SampleActionFilter]
[HttpGet("SomeResource")]
public IActionResult SomeResource()
{
return Content("Successful access to resource - header should be set.");
}
}
您可以检查此链接:
让我知道是否有用。你检查过这个吗?你可以使用一个动作过滤器:)你的答案是正确的,为了他人的利益,只需稍加调整,而不是只使用过滤器,使用
EnableQueryAttributeFilter