【问题标题】:Use ODataPayloadValueConverter with .NET 5 and Microsoft.AspNetCore.OData 8.0.2将 ODataPayloadValueConverter 与 .NET 5 和 Microsoft.AspNetCore.OData 8.0.2 一起使用
【发布时间】:2021-11-14 22:51:30
【问题描述】:

我有一个 ODataPayloadValueConverter,我正在尝试将它添加到我的配置中

public class DateTimeValueLocaliser : ODataPayloadValueConverter {
    public override object ConvertToPayloadValue(object value, IEdmTypeReference edmTypeReference)
    {
        if (value is DateTime)
        {
            return new DateTime();
        }
        else
        {
            return base.ConvertToPayloadValue(value, edmTypeReference);
        }
    } }

我的 Startup.cs

    services.AddControllers(options =>
        {
            options.EnableEndpointRouting = false;
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        })
        .SetCompatibilityVersion(CompatibilityVersion.Latest)
        .AddNewtonsoftJson(opt =>
        {
            opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            opt.SerializerSettings.ContractResolver = new DefaultContractResolver();
            opt.SerializerSettings.Formatting = Formatting.Indented;
        }).AddOData(options =>
        {
            options.AddRouteComponents("odata", new MyODataModelBuilder().GetEdmModel());
        });
    services.AddMvcCore();

我应该如何以及在何处将负载值转换器添加到配置中。 我可以将它添加到 ModelBuilder IEdmModel 函数中吗?

【问题讨论】:

    标签: .net asp.net-core odata


    【解决方案1】:

    自从 .NET 5 改变了这一点,您现在可以在 AddRouteComponents 中设置它

    .AddOData(options =>
            {
                options.AddRouteComponents("odata", GetEdmModel(), action =>
                {
                    action.AddSingleton(typeof(ODataPayloadValueConverter), new ODataByteArrayAsHexJsonConverter());
                })
                .Filter().Select().Expand().Count().OrderBy().SetMaxTop(50).SkipToken();
            });
    

    也请查看以下文章.NET Core Web API with ODATA serializing DateTime

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 2010-11-22
      • 2017-07-26
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 2021-05-03
      • 2018-08-30
      • 2022-07-20
      相关资源
      最近更新 更多