WSDL - Могу ли я контролировать формат DateTime, отправляемый веб-службе? - PullRequest
3 голосов
/ 07 апреля 2020

Мы реализовали сторонний API, используя предоставленный нам WSDL.

Реализация в C# с использованием встроенной утилиты ссылки на сервис Visual Studio (она берет файл WSDL и создает файл ссылки на сервис). со всеми службами и классами)

в файле reference.cs есть член с именем «CreateDate», имеющий тип DateTime.

Проблема в том, что сторонний API отправляет нам это данные элемента с миллисекундами в формате 3 места после точки, но когда я пытаюсь отправить эти данные обратно в веб-службу, среда WSDL удаляет последний ноль из элемента миллисекунды

, например:

сторонний API отправляет "CreateDate =" 2020-03-26T07: 49: 05.640 + 00: 00 ". Каркас. net сериализует эти данные в классы c#. Пока все хорошо. сохраните этот класс, чтобы мы могли отправить его позже в веб-службу, которую мы создаем для веб-службы, с указанием даты и времени, действительной на данный момент (см. скриншот отладчика)

enter image description here

когда я "ловлю" передаваемый RAW-запрос, значение даты-времени недопустимо (см. Скриншот)

(поскольку я не могу использовать fiddler для технических проблем, я перехватываю эти запросы путем реализации класса MessageInspector и использования отладчика для проверки System.ServiceModel.Channels.Message перед его отправкой в ​​веб-службу)

enter image description here

Когда я отправляю эти данные, я получаю сообщение об ошибке от веб-службы, так как они имеют проверку в этом поле.

где-то, после моего контроля, . net serializer (я полагаю) преобразует класс DateTime в строку \ поток с другим значением

, любое предложение поможет

, спасибо

...