我在事件中看到了太多的次數,在給定的ASP.NET請求中記錄了這個「ContextId」。我最近開始研究ASP.NET推出的ETW事件,並希望在我自己的事件中重用這個ContextID。如何訪問ASP.NET/IIS ContextId
我該怎麼做?
System.Threading.Thread.CurrentContext似乎沒有它。它總是0.
我在事件中看到了太多的次數,在給定的ASP.NET請求中記錄了這個「ContextId」。我最近開始研究ASP.NET推出的ETW事件,並希望在我自己的事件中重用這個ContextID。如何訪問ASP.NET/IIS ContextId
我該怎麼做?
System.Threading.Thread.CurrentContext似乎沒有它。它總是0.
這是一個記錄不完善的功能,但是你可以得到它。
它位於HttpWorkerRequest RequestTraceIdentifier屬性上。
http://msdn.microsoft.com/en-us/library/system.web.httpworkerrequest.requesttraceidentifier.aspx
您可以從HttpWorkerRequest.RequestTraceIdentifier
財產得到它。請注意,顯然,您需要啓用IIS ETW(Windows事件跟蹤)功能,否則此屬性將爲Guid.Empty
。以下是如何從HttpContext
得到它:
var serviceProvider = (IServiceProvider)HttpContext.Current;
var workerReqest = (HttpWorkerRequest)serviceProvider.GetService(typeof(HttpWorkerRequest));
var requestId = workerReqest.RequestTraceIdentifier;