簡體   English   中英

Append 額外數據到 ASP.NET 核心中調用的操作

[英]Append extra data to the called actions in ASP.NET Core

假設我們有 10 個控制器。 每個名為ControllerN

假設在每個動作中我們有 10 個動作,稱為ActionN

我們知道它們都返回一個object並將其轉換為 JSON。

不管 output JSON 是什么,我都想給它附加性能時序。 例如:

{
   ...otherData,
   milliseconds: 32
}

ASP.NET 內核是否可以?

我想到了一個中間件。 但是中間件會影響整個流量。 因此,它可能更適合以其他方式進行。

您可以為此目的使用操作過濾器。 ASP.NET 內核中的濾波器

並且即時修改 JSON 將很困難。 你可以做這樣的事情。

public class SampleActionFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        context.HttpContext.Items["timer"] = Stopwatch.StartNew();
        base.OnActionExecuting(context);
    }
    public override void OnActionExecuted(ActionExecutedContext context)
    {
        var stopwatch = context.HttpContext.Items["timer"] as Stopwatch;
        if(stopwatch != null)
        {
            var elapsed = stopwatch.ElapsedMilliseconds;
            context.HttpContext.Response.Headers.TryAdd("X-ExecutionTime", elapsed.ToString());
        }

        base.OnActionExecuted(context);
    }
}

響應標頭-Swagger

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM