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);
}