首页 新闻 会员 周边 捐助

Asp.net Core2.0 webapi 项目中 如何在自定义中间件中获取Action的返回值

0
悬赏园豆:10 [待解决问题]

Asp.net Core2.0 webapi 项目中  如何在自定义中间件中获取Action的返回值?

为什么HttpContext.Response.Body。不可读取。

黄长旭的主页 黄长旭 | 初学一级 | 园豆:192
提问于:2018-01-10 18:38
< >
分享
所有回答(1)
3

亲测 stackoverflow 上的这个解决方法有效:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.Use(async (context, next) =>
    {
        using (var ms = new MemoryStream())
        {
            var orgBodyStream = context.Response.Body;
            context.Response.Body = ms;

            await next();

            using (var sr = new StreamReader(ms))
            {
                ms.Seek(0, SeekOrigin.Begin);
                Console.WriteLine("Read Response.Body:\n" + sr.ReadToEnd());

                ms.Seek(0, SeekOrigin.Begin);
                await ms.CopyToAsync(orgBodyStream);
                context.Response.Body = orgBodyStream;
            }
        }
    });

    app.UseMvc();
}
dudu | 园豆:30734 (高人七级) | 2018-01-10 21:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册