[英]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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.