Прочитать тело запроса как строку внутри промежуточного программного обеспечения - PullRequest
1 голос
/ 19 октября 2019

Как можно прочитать значение тела в виде строки из HttpContext.Request в промежуточном программном обеспечении ASP.NET Core 3.0?

private static void MyMiddleware(IApplicationBuilder app)
{
    app.Run(async ctx =>
    {
        var body = ctx.Request.??????
        await context.Response.WriteAsync(body);
    });
}

1 Ответ

1 голос
/ 21 октября 2019

Вот два способа настройки промежуточного программного обеспечения, как показано ниже:

1. Первый способ заключается в том, что вы можете написать промежуточное программное обеспечение в Startup.cs:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
       //...
        app.Run(async ctx =>
        {
            string body;
            using (var streamReader = new System.IO.StreamReader(ctx.Request.Body, System.Text.Encoding.UTF8))
            {
                body = await streamReader.ReadToEndAsync();
            }
            await ctx.Response.WriteAsync(body);
        });    
       //... 
    }

2. Вторым способом являетсячто вы могли бы настроить класс промежуточного программного обеспечения, как показано ниже:

public class MyMiddleware
{
    private readonly RequestDelegate _next;

    public MyMiddleware(RequestDelegate next)
    {
        _next = next;
    }
    public async Task Invoke(HttpContext httpContext)
    {
        string body;
        using (var streamReader = new System.IO.StreamReader(httpContext.Request.Body, System.Text.Encoding.UTF8))
        {
            body = await streamReader.ReadToEndAsync();
        }
        await httpContext.Response.WriteAsync(body);
    }
}

Затем вам нужно зарегистрироваться в Startup.cs:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        //...
        app.UseMiddleware<MyMiddleware>();
        //...
    }

3.Результат: enter image description here

Ссылка: Запись собственного промежуточного программного обеспечения ASP.NET Core

...