ASP.Net Core 2.0 - Как вернуть пользовательский ответ json или xml из промежуточного программного обеспечения?

В ASP.Net Core 2.0 я пытаюсь вернуть сообщение в формате json или xml с кодом состояния. У меня нет проблем с возвратом пользовательского сообщения с контроллера, но я не знаю, как с ним работать в промежуточном программном обеспечении.

Мой класс промежуточного программного обеспечения выглядит так:

public class HeaderValidation
{
    private readonly RequestDelegate _next;
    public HeaderValidation(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext httpContext)
    {
        // How to return a json or xml formatted custom message with a http status code?

        await _next.Invoke(httpContext);
    }
}

1 ответ

Решение

Чтобы заполнить ответ в использовании промежуточного программного обеспечения httpContext.Response свойство, которое возвращает HttpResponse Объект для этого запроса. Следующий код показывает, как вернуть ответ 500 с содержимым JSON:

public async Task Invoke(HttpContext httpContext)
{
    if (<condition>)
    {
       context.Response.StatusCode = 500;  

       context.Response.ContentType = "application/json";

       string jsonString = JsonConvert.SerializeObject(<your DTO class>);

       await context.Response.WriteAsync(jsonString, Encoding.UTF8);

       // to stop futher pipeline execution 
       return;
    }

    await _next.Invoke(httpContext);
}
Другие вопросы по тегам