Masstransit RabbitMQ 8.0.3 版本中的 IRabbitMqBusFactoryConfigurator.ConfigureJsonSerializer 在哪里?

nap*_*fya 2 masstransit rabbitmq

我们从 Masstransit 7.0.6 升级到 8.0.3

之前我们正在配置ConfigureJsonSerializer. 但这似乎从 8.0.3 版本中删除了。源代码如下

x.UsingRabbitMq((context, cfg) =>
{
    cfg.Host(Config.GetValue<string>("RabbitMQ:Host"), "/", h =>
    {
        h.Username(Config.GetValue<string>("RabbitMQ:Username"));
        h.Password(Config.GetValue<string>("RabbitMQ:Password"));
    });

    cfg.ConfigureEndpoints(context);

    cfg.ConfigureJsonSerializer(settings => { settings.DefaultValueHandling = DefaultValueHandling.Include; return settings; });
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我们如何替换ConfigureJsonSerializer和DefaultValueHandling?

我看到有

cfg.UseJsonSerializer();
cfg.ConfigureJsonSerializerOptions(options => options.DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.???);
Run Code Online (Sandbox Code Playgroud)

这是正确的替代品吗DefaultIgnoreCondition?

Chr*_*son 5

如果您遵循升级指南,您可以看到 Newtonsoft 不再是默认的 JSON 序列化器。您上面指出的方法已重命名为ConfigureNewtonsoftJsonSerializer并且仅存在于单独的 Newtonsoft 程序集中。

如果要配置 System.Text.Json 以包含默认值,可以使用以下方式配置这些选项:

cfg.ConfigureJsonSerializerOptions(options => 
{
    options.DefaultIgnoreCondition = JsonIgnoreCondition.Never;
    return options;
}
Run Code Online (Sandbox Code Playgroud)