gpt4 book ai didi

c# - 如何在 ASP.NET Core 3.1 中获取当前的 JsonSerializerOptions?

转载 作者:行者123 更新时间:2023-12-04 01:29:39 25 4
gpt4 key购买 nike

我使用 System.Text.Json 并在 Startup.cs 的 ConfigureServices 方法中设置 JsonSerializerOptions

 public void ConfigureServices(IServiceCollection services)
{
...
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});
...
}
现在我想在 CustomErrorHandlingMiddleware 中获取当前的 JsonSerializerOptions
public async Task InvokeAsync(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception exc)
{
var response = new SomeObject();

var currentJsonSerializerOptions = ? //I want get CurrentJsonSerializerOptions here

var result = System.Text.Json.JsonSerializer.Serialize(response, currentJsonSerializerOptions);

context.Response.ContentType = "application/json";
context.Response.StatusCode = 500;
await context.Response.WriteAsync(result);
}
}
我怎样才能做到这一点?谢谢。

最佳答案

你可以注入(inject) IOptions<JsonOptions>IOptionsSnapshot<JsonOptions>根据 Options pattern进入你的中间件。

public async Task Invoke(HttpContext httpContext, IOptions<JsonOptions> options)
{
JsonSerializerOptions serializerOptions = options.Value.JsonSerializerOptions;

await _next(httpContext);
}

关于c# - 如何在 ASP.NET Core 3.1 中获取当前的 JsonSerializerOptions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61287571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com