如何唯一标识ASP.NET Core 2应用程序中的每个请求(用于记录)

Vic*_*tor 12 asp.net-core asp.net-core-2.0

在ASP.NET Core 2应用程序中,我需要为每个请求提供唯一标识符(例如Guid),以便我可以在每个日志中包含该ID,并了解每个请求的日志顺序.

这不难写自己,但我想知道是否有一个内置功能,我可以使用或ASP.NET Core 2实现这一点.

And*_*rew 13

ASP.NET Core还具有HttpContext.TraceIdentifier唯一标识当前请求的功能。

它是由Kestrel为每个传入请求生成的,因此不适合将来自另一个服务的调用关联起来,但适合于将单个请求的日志关联在一起,或关联可能向用户显示的错误消息。相应的日志。

  • 据我了解,这不是唯一的,是吗?它是顺序的,并且以滴答声开始于服务启动时间,因此,如果两个请求来自同一服务的不同实例,则它们可能具有相同的ID。 (2认同)

Set*_*Set 12

你可以使用System.Diagnostics.Activityclass(source).来自活动用户指南

Activity.IdHTTP相关协议方面用作分层Request-Id

例如,Microsoft/ApplicationInsights-aspnetcore用于应用程序监视.

  • 有没有示例如何使用它?控制器内的Activity.Current为null (5认同)