我正在尝试使用类似于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);
,但两者都不起作用。