내 이벤트에서이 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;