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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage