xml-rpc.net определенно принимает System.Datetime и преобразует в dateTime.iso8601. Гоча у меня была с различными интерпретациями dateTime.iso8601. Из вашего шаблона xml поддерживается вывод даты и времени (20101117T09: 42: 00), и у вас не будет такой же проблемы. У меня был очень строгий вышестоящий сервер, который нуждался в некотором смещении (например, +001), и мне пришлось расширить и передать формат datetime в xml-rpc.net.
Редактировать
Да, я изменил код, чтобы получить новый DateTimeFormat. Я скачал исходный код и внес следующие изменения (хотелось бы, чтобы он был лучше размещен, и можно было бы предложить модификацию).
Существует XmlRpcSerializer.cs, где происходит сериализация типа в формат xml-rpc. Метод, который вам нужен, естественно ...
void Serialize(
XmlWriter xtw,
Object o,
MappingActions mappingActions,
List<object> nestedObjs)
Где-то в этом методе есть проверка для XmlRpcType.tDateTime:
else if (xType == XmlRpcType.tDateTime)
{
DateTime dt = (DateTime)o;
//The following line is what you need, if a custom DateTime format was supplied, to override the default
string sdt = dt.ToString((string.IsNullOrEmpty(DateTimeFormat) ? "yyyyMMdd'T'HH':'mm':'ss" : DateTimeFormat),
DateTimeFormatInfo.InvariantInfo);
WriteFullElementString(xtw, "dateTime.iso8601", sdt);
}
Остальная часть истории - о том, как передать пользовательский формат даты и времени в класс XmlRpcSerializer. Вы можете просто добавить свойство в этот класс, чтобы это произошло. Существует XmlRpcFormatSettings, который можно использовать, но это зависит от вас.