Нэнси: Как записать тело ответа в Нэнси - PullRequest
0 голосов
/ 11 февраля 2019

В случае, если мы ищем сбой в нашем приложении, мы хотим добавить возможность регистрировать все запросы и ответы, предоставляемые нашей службой 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);
}

Это неправильный способ получения содержимого тела?Есть ли способ вообще?

...