У меня возникли проблемы со службой WCF REST. У объекта-проводника, который я пытаюсь вернуть, некоторые свойства не заданы, что приводит к 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.