This is a short one, I promise. A colleague was complaining that NetExt command !whttp was not displaying the active/finished requests on a dump file he was sure it was processing http requests. The truth is that the process was not w3wp.exe (IIS Worker Process) but rather a self-hosted WCF service. The command !whttp relies on System.Web.HttpContext class which is the class used by IIS managed applications to control request and response. Self-hosted WCF Services rely on System.Net.HttpListenerContext class instead. There is no specialized command for that in NetExt but this does not prevent anyone from creating their own query which I show below. If you are interested but have no idea what I am talking about, check this out before you decide it is indeed not something you may be interested in: http://blogs.msdn.com/b/rodneyviana/archive/2015/03/10/getting-started-with-netext.aspx
This is my suggestion of query. Unlike HttpContext, the HttpListenerContext class does not offer a reliable timestamp of the request time, so things like time running and request time are not included. If someone can come up with a way to do this, please let the rest of us know in the comments and I will update the command and give praise to the brave researcher.
The command on a easy to copy-and-paste form:
!wfrom -nospace -nofield -type System.Net.HttpListenerContext where(!m_Request.m_IsDisposed) $addr()," ",$if($stackroot($addr()) == ""," ---",$lpad($split($stackroot($addr()),",",0),4))," ",$rpad($if(m_Response,$enumname(m_Response.m_ResponseState),"Finished"),12),$if(m_Response,$replace($lpad(m_Response.m_NativeResponse.StatusCode,5),"0n"," ")," ---")," ",$rpad($if(m_Request,m_Request.m_HttpMethod,"NA"),8)," ",$isnull(m_request.m_RequestUri.m_String,m_request.m_RawUrl)
Below is the output, the headers are included for clarity purposes, it is not part of the normal output.