次のように IHttpModule を使用して、http 要求の内容をログに記録しようとしています。
public class LoggingModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += ContextBeginRequest;
}
private void ContextBeginRequest(object sender, EventArgs e)
{
var request = ((HttpApplication)sender).Request;
string content;
using (var reader = new StreamReader(request.InputStream))
{
content = reader.ReadToEnd();
}
LogRequest(content)
}
}
問題は、入力ストリームを最後まで読み取った後、InputStream が消えたか、カーソルがストリームの最後にある可能性が高いことです。
私は試しrequest.InputStream.Position = 0;
ましrequest.InputStream.Seek(0, SeekOrigin.Begin);
たが、どちらも機能しません。