在我的事件中,我已经看过很多次记录给定ASP.NET请求的“ContextId”。我最近开始研究由ASP.NET推出的ETW事件,并希望在我自己的事件中重用这个ContextID。
我该怎么做?
System.Threading.Thread.CurrentContext似乎没有它。它总是0。
答案 0 :(得分:2)
这是一个记录不完整的功能,但是你可以得到它。
它位于HttpWorkerRequest RequestTraceIdentifier属性上。
http://msdn.microsoft.com/en-us/library/system.web.httpworkerrequest.requesttraceidentifier.aspx
答案 1 :(得分:2)
您可以从HttpWorkerRequest.RequestTraceIdentifier
属性获取它。请注意,显然您需要启用IIS ETW(Windows事件跟踪)功能,否则此属性将为Guid.Empty
。以下是如何从HttpContext
获取它:
var serviceProvider = (IServiceProvider)HttpContext.Current;
var workerReqest = (HttpWorkerRequest)serviceProvider.GetService(typeof(HttpWorkerRequest));
var requestId = workerReqest.RequestTraceIdentifier;