В случае, если мы ищем сбой в нашем приложении, мы хотим добавить возможность регистрировать все запросы и ответы, предоставляемые нашей службой Nancy.Для этого мы добавили несколько конвейерных хуков.Но, к сожалению, я не смог получить основную часть наших ответов.Когда я выполняю делегат, который выводит содержимое в поток ответа (Содержание), мой поток ответа (мс) удаляется.
public void LogResponse(NancyContext context) {
string CreateResponseMessage() {
return $"Response (Client: {context.Request.UserHostAddress}) [{context.Request.Method}] {context.Request.Url}, " +
$"Status code: {(int) context.Response.StatusCode} {context.Response.StatusCode}";
}
string CreateContentMessage() {
using (var ms = new MemoryStream())
{
// For some reason, when executing this line, my ms is disposed
context.Response.Contents(ms);
ms.Seek(0, SeekOrigin.Begin);
using (var sr = new StreamReader(ms)) {
var headers = FormatHeaders(context.Response.Headers);
var content = sr.ReadToEnd();
return
$"Headers:{NewLine}{headers}{NewLine}" +
$"Body:{NewLine} {content}";
}
}
}
Log.Info(CreateResponseMessage());
Log.Verbose(CreateContentMessage);
}
Это неправильный способ получения содержимого тела?Есть ли способ вообще?