c# - 如何添加 net5.0 Worker 应用程序 AddJsonOptions

标签 c# json .net .net-core worker

解决方案中有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/

相关文章:

c# - 如何检查 JsonObject 是否为空值(windows.data.json)

c# - 硬盘或硬盘的序列号

c# - 优雅地停止 .net 启动的 Java 进程

c# - 将动态对象应用于 Storyboard

c# - 尝试保存实体时 ModelState.isvalid 为 false,错误表示相关实体中需要一个字段

c# - 在 WPF 中显示来 self 的网络摄像头的视频流?

java - 如何从嵌套的json中获取键的所有值

php - PHP 中的内联 JSON 语法

MySQL从跨行的任意长字符串数组中获取不同的值

c# - Orchard CMS 部分放置