DarthVader
DarthVader

Reputation: 55032

How is HttpContext TraceIdentifier generated in .NET Core?

How is HttpContext TraceIdentifier (aka Correlation-Id) generated?

I request a page through controller which gives me the following TraceId: 0HLEACIU86PT6:0000000D

The page fires an ajax call which has the following TraceId: 0HLEACIU86PT7:00000005

As you can see, they are very similar. Is it based on time?

Why didn't I get the same TraceIdentifier?

How can I ensure the same TraceIdentifier?

Upvotes: 34

Views: 26585

Answers (2)

davidfowl
davidfowl

Reputation: 38784

Kestrel generates the request ID as {ConnectionId}:{Request number}. The connection id is the base32 encoded version of a long using the alphabet 1-9, and A - V. The request count is the number of requests over that connection. The nth request over a specific connection is {ConnectionId}:{n}

https://github.com/aspnet/KestrelHttpServer/blob/a48222378b8249a26b093b5b835001c7c7b45815/src/Kestrel.Core/Internal/Infrastructure/CorrelationIdGenerator.cs

https://github.com/aspnet/KestrelHttpServer/blob/0aff4a0440c2f393c0b98e9046a8e66e30a56cb0/src/Kestrel.Core/Internal/Http/Http1Connection.cs#L446

Upvotes: 58

Related Questions