Я звоню в службу SOAP с использованием клиента WCF. NET. Иногда случается, что служба SOAP отправляет ответ, который не может быть сериализован объектам. NET. Основным виновником здесь является поле даты и времени, в котором они отправляют обратно «24:00:00» вместо «00:00:00».
В этом случае мы получаем следующую ошибку: «The DateTime, представленный строкой, не поддерживается в календаре System.Globalization.GregorianCalendar. "
Чтобы решить эту проблему, я реализовал инспектор сообщений WCF, в котором я хочу изменить сообщение в методе" AfterReceiveReply ". Здесь я хотел бы найти неправильную дату и исправить ее, прежде чем отправить ее обратно клиенту.
Я бы сделал замену путем манипулирования строками (find + replace).
Однако я Я не могу получить содержимое ответного сообщения в виде строки , поскольку он читает его как XML объект (и он содержит недопустимую дату).
Я также попытался выполнить следующее, но там у меня есть такая же проблема (поскольку мы не можем записать недопустимые значения XML в объект XmlWrite), он выдает ту же ошибку, что и выше.
MemoryStream ms = new MemoryStream();
XmlWriter xw = XmlWriter.Create(ms);
reply.WriteMessage(xw);
xw.Flush();
string body = Encoding.UTF8.GetString(ms.ToArray());
xw.Close();
Объект сообщения принимает только «XmlWriter» или « XmlDictionaryWriter "для записи в другой поток:
Любые идеи, как получить необработанное содержимое тела ответного сообщения в виде строкового объекта, не анализируя его как XML Документ?
* 102 5 * Заранее спасибо!
С уважением