是否有规范的方法来利用ASP.NET中间件中配置的JsonOutputFormatter
?或者,更一般地说,是否有更好的方法来序列化对JSON的响应,而不是在我的中间件中显式调用JsonConvert.SerializeObject
?
目前,我有以下代码:
public static void HandleHealthRequests(this IApplicationBuilder app)
{
app.Map(new PathString("/health"), builder =>
{
builder.Run(async context =>
{
string response = JsonConvert.SerializeObject(new { DateTime.UtcNow, Version = _version });
context.Response.StatusCode = StatusCodes.Status200OK;
context.Response.ContentType = "application/json";
context.Response.ContentLength = response.Length;
await context.Response.WriteAsync(response);
});
});
}
这很好用,但直接调用JsonConvert.SerializeObject
并直接操纵Response
感觉不对。
我查看了解析JsonOutputFormatter
以直接利用它,但它需要一个OutputFormatterContext
,它看起来太复杂而无法设置。此外,我还试图利用JsonOutputFormatter.SerializerSettings
但在应用启动时发现它是null
,因此我的代码在进程启动时抛出。
答案 0 :(得分:2)
我有一个类似的问题,我只想对我的所有json响应使用相同的配置,无论它们是在中间件,还是过滤器或控制器中......使用.net core的新版本(至少使用{{ 1}})我在格式化程序中使用Microsoft.AspNetCore.Mvc.Formatters.Json 1.1.2
方法,我在我的中间件或过滤器中使用依赖注入解析WriteObject(TextWriter writer, object value)
并使用该WriteObject方法进行序列化。
JsonOutputFormatter