Я пытаюсь получить каждый запрос и ответ моего HttpListener
в журнале.
Для HttpListenerContext.Request.InputStream
это было так просто, как сделать это:
var finfoIn = context.Request.GetType().GetField("m_RequestStream", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
context.Request.InputStream.CopyTo(memstreamIn);
memstreamIn.Seek(0, System.IO.SeekOrigin.Begin);
var reader = new System.IO.StreamReader(memstreamIn, Encoding.Unicode);
this.Log(reader.ReadToEnd()); //Actual log method that prints to console
memstreamIn.Seek(0, System.IO.SeekOrigin.Begin);
finfoIn.SetValue(context.Request, memstreamIn);
Однако из-задля HttpListenerContext.Response.OutputStream
, имеющего тип поля (internal) System.Net.HttpResponseStream
, описанный выше трюк невозможен.
У кого-нибудь есть какое-либо решение, позволяющее вести регистрацию для OutputStream
?