解决方案中有API项目和Worker项目。 API项目是用net5.0 Microsoft.NET.Sdk.Web编写的。 在 Startup.cs 中
services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); // for enum as strings
});
此代码块可在 Startup.cs 中找到。
我也想将这些 JsonOptions 添加到 net5.0 Worker 项目中,但 Worker 项目中的 Controller 和 Startup.cs 不可用。我该如何添加?
我试过了
services.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
还有这个
services.AddMvc().AddJsonOptions(o =>
{
o.JsonSerializerOptions.PropertyNamingPolicy = null;
o.JsonSerializerOptions.DictionaryKeyPolicy = null;
});
但不适合我
最佳答案
AddJsonOptions
仅用于通过端点绑定(bind)/发送 json,工作项目不会公开任何端点(至少默认情况下如此),因此除非您解析 IOptions<JsonOptions>
,否则添加它们是没有意义的。直接在代码中的某处。在这种情况下您可以随时调用Configure
:
services.Configure<JsonOptions>(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); // for enum as strings
});
关于c# - 如何添加 net5.0 Worker 应用程序 AddJsonOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75165494/