2011-10-09 23 views
1

我在事件中看到了太多的次數,在給定的ASP.NET請求中記錄了這個「ContextId」。我最近開始研究ASP.NET推出的ETW事件,並希望在我自己的事件中重用這個ContextID。如何訪問ASP.NET/IIS ContextId

我該怎麼做?

System.Threading.Thread.CurrentContext似乎沒有它。它總是0.

回答

1

您可以從HttpWorkerRequest.RequestTraceIdentifier財產得到它。請注意,顯然,您需要啓用IIS ETW(Windows事件跟蹤)功能,否則此屬性將爲Guid.Empty。以下是如何從HttpContext得到它:

var serviceProvider = (IServiceProvider)HttpContext.Current; 
var workerReqest = (HttpWorkerRequest)serviceProvider.GetService(typeof(HttpWorkerRequest)); 
var requestId = workerReqest.RequestTraceIdentifier; 

參考:https://github.com/serilog/serilog/commit/b289dbcde3e0f7366d90daf66e00c94f4cc58de3#diff-4934d624fc1d467b08411d520972e840R48