我正在Web API应用程序上运行一些负载测试,并试图找到一种方法来识别每个请求,这些请求进入方法OnActionExecuted
和OnActionExecuting
我的问题是,在对象HttpActionExecutedContext
和HttpActionContext
中,我可以获取某种唯一标识符来标识单个请求。
我尝试将unix时间戳添加到我的查询字符串中,但是请求通常同时进入,因此这无济于事。
我希望这些对象具有某种属性?
最佳答案
您可以使用Dependency Injection添加带有生成的标识符的作用域类。
每个请求一次创建一个范围类别。
public class IdentifiedScope
{
public Guid Id { get; } = Guid.NewGuid();
}
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IdentifiedScope>();
}
// Controller
public MyController(IdentifiedScope identifiedScope)
{
this.identifiedScope = identifiedScope;
}
// Usage in an ActionFilter
public override async Task OnActionExecutionAsync(ActionExecutingContext context,
ActionExecutionDelegate next)
{
var identifiedScope =
context.HttpContext.RequestServices.GetService<IdentifiedScope>();
}