小编Dan*_* Ko的帖子

Microsoft.AspNetCore.Odata 配置日期时间序列化以使用 Utc 或省略时区

Microsoft.AspNetCore.Odata 7.3在 Asp.net Web Api Core 3.1 项目中使用。

事实证明,该库将服务器的 TimeZone 添加到 Ef 输出中的 DateTimes 中。

EF 本身返回带有 的数据DateTimeKind.Unspecified

因此,我希望 odata lib 能够省略时区转换,因为 webApi 服务的行为方式就是这样。

问题是如何使odata不添加服务器的时区或以utc(Z格式)返回所有内容。

尝试通过 NewtonSoft serializerSettings 设置它,但它不适用于 OData 端点

services.AddOData();

services.AddMvc(options => {options.EnableEndpointRouting = false;});

services
  .AddControllers()
  .AddNewtonsoftJson(options =>
                {
                    options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                });
Run Code Online (Sandbox Code Playgroud)

感谢帮助!

更新:在 Ef 级别上将 DateTimeKind 设置为 Utc(通过ValueConverters)允许服务器将日期时间正确转换为本地日期时间。但日期时间仍然不是以 Z 格式返回,而是以服务器的本地时区返回。

c# odata asp.net-core-webapi

12
推荐指数
1
解决办法
2947
查看次数

标签 统计

asp.net-core-webapi ×1

c# ×1

odata ×1