Microsoft.AspNetCore.Odata настраивает сериализацию datetime, чтобы использовать Ut c или опустить часовой пояс - PullRequest
0 голосов
/ 07 мая 2020

Я использую Microsoft.AspNetCore.Odata 7.3 в Asp. net Проект Web Api Core 3.1.

Оказывается, библиотека добавляет TimeZone сервера в DateTimes из вывода Ef.

Ef сам возвращает данные с DateTimeKind.Unspecified.

Итак, я ожидал, что odata lib просто пропустит сдвиг TimeZone, потому что службы webApi ведут себя таким образом.

Вопрос в том, как чтобы odata не добавляла TimeZone сервера или возвращала все в ut c (Z-формат).

Пытался установить через NewtonSoft serializerSettings, но это не работает для конечных точек OData

services.AddOData();

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

services
  .AddControllers()
  .AddNewtonsoftJson(options =>
                {
                    options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                });

Спасибо за помощь!

Upd: Установка DateTimeKind на Ut c на уровне Ef (через ValueConverter s) позволяет серверу правильно конвертировать datetime в локальное. Но все же datetime возвращается не в Z-формате, а с локальным часовым поясом сервера.

...