2011-10-09 5 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