南希:如何在南希记录响应正文

时间:2019-02-11 10:57:08

标签: c# rest nancy

如果我们在应用程序中搜索失败,我们希望增加记录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);
}

这是获取身体内容的错误方法吗?有办法吗?

0 个答案:

没有答案