So protokollieren Sie den Anforderungseingabestream mit HttpModule und setzen dann die InputStream-Position zurück
Ich versuche, den Inhalt einer http-Anfrage mit einem IHttpModule wie folgt zu protokollieren:
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)
}
}
Das Problem ist, dass der InputStream nach dem vollständigen Lesen des Eingabestreams entweder verschwunden ist oder sich der Cursor mit größerer Wahrscheinlichkeit am Ende des Streams befindet.
Ich habe versuchtrequest.InputStream.Position = 0;
undrequest.InputStream.Seek(0, SeekOrigin.Begin);
aber auch nicht arbeiten.