próbuję zalogować zawartości żądania HTTP, przy użyciu IHttpModule tak:Jak zalogować żądania InputStream z HttpModule, a następnie przywrócić pozycję InputStream
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)
}
}
Problem polega na tym, że po przeczytaniu strumienia wejściowego koniec, wydaje się, że InputStream zniknął lub jest bardziej prawdopodobne, kursor znajduje się na końcu strumienia.
Próbowałem request.InputStream.Position = 0;
i request.InputStream.Seek(0, SeekOrigin.Begin);
, ale nie działa.
Uważaj na kodowanie, myślę, że będziesz chciał, żeby to było Encoding.UTF8.GetString (bytes); – SimonF
Świetna odpowiedź !! +1 –