Я испытываю проблемы с сервисом REST WCF. Объект проводки, который я пытаюсь вернуть, имеет определенные свойства, которые не заданы, что приводит к DateTime.MinValue для свойств типа DateTime. Служба возвращает пустой документ (с HTTP-статусом 200???). Когда я пытаюсь вызвать сериализацию JSON самостоятельно, исключение:
SerializationException: значения DateTime, которые больше, чем DateTime.MaxValue или меньше, чем DateTime.MinValue при преобразовании в UTC не могут быть сериализованы в JSON.
Это можно воспроизвести, запустив следующий код в консольном приложении:
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DateTime));
MemoryStream m = new MemoryStream();
DateTime dt = DateTime.MinValue;
// throws SerializationException in my timezone
ser.WriteObject(m, dt);
string json = Encoding.ASCII.GetString(m.GetBuffer());
Console.WriteLine(json);
Почему такое поведение? Я думаю, что это связано с моим часовым поясом (GMT + 1). Поскольку DateTime.MinValue по умолчанию (DateTime), я бы ожидал, что это может быть сериализовано без проблем.
Любые советы о том, как заставить мою службу REST вести себя? Я не хочу менять свой DataContract.