首页 > 解决方案 > HttpActionContext 唯一请求标识符

问题描述

我正在我的 Web API 应用程序上运行一些负载测试,并试图找到一种方法来识别每个请求进入方法OnActionExecutedOnActionExecuting

我的问题是,在对象中HttpActionExecutedContextHttpActionContext我是否可以获得某种唯一标识符来识别单个请求。

我已经尝试在我的查询字符串中添加一个 unix 时间戳,但是请求通常是同时进来的,所以这没有帮助。

我希望这些对象具有某种属性?

标签: c#asp.net-web-api

解决方案


如果要检查请求执行时间,可以使用 serilog

在您的 statup.cs 上设置此代码

        Log.Logger = new LoggerConfiguration()
          .Enrich.With<HttpRequestIdEnricher>()
          .Enrich.With<HttpRequestNumberEnricher>()
          .Enrich.With<HttpSessionIdEnricher>()
          .Enrich.With<HttpRequestTraceIdEnricher>()
          .WriteTo.Debug()
          .CreateLogger();
HttpRequestIdEnricher
HttpRequestNumberEnricher
HttpSessionIdEnricher
HttpRequestTraceIdEnricher

如果 Serilog 不附带这些可能是单独的 nuget 包,只是为 htem 搜索

Install Serilog
and Serilog.Sinks.Debug

对于每个请求,您应该在控制台中看到结果

[05:06:14 INF] HTTP GET /api/v1/blablabla/blablabla 在 7530 毫秒内响应 401

希望能帮助到你


推荐阅读