ASP.Net Core 2.0 - 如何return自定义json或xml来自中间件的响应?
ASP.Net Core 2.0 - How to return custom json or xml response from middleware?
在 ASP.Net Core 2.0 中,我正在尝试 return 格式为 json 或 xml 的消息以及状态代码。我没有问题 return 从控制器发送自定义消息,但我不知道如何在中间件中处理它。
我的中间件 class 目前看起来是这样的:
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);
}
}
要在中间件中填充响应,请使用 httpContext.Response
属性 that returns HttpResponse
object for this request。以下代码显示如何 return 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);
}
在 ASP.Net Core 2.0 中,我正在尝试 return 格式为 json 或 xml 的消息以及状态代码。我没有问题 return 从控制器发送自定义消息,但我不知道如何在中间件中处理它。
我的中间件 class 目前看起来是这样的:
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);
}
}
要在中间件中填充响应,请使用 httpContext.Response
属性 that returns HttpResponse
object for this request。以下代码显示如何 return 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);
}