У нас есть настраиваемая XML-сериализация для нашего «протокола» здесь:
[XmlRoot("axf", Namespace = Axf10Namespace)]
public class AxfDocument : IXmlSerializable
{
public const string Axf10Namespace = "http://schemas.***.ru/axf/axf-1.0.0";
// ...
}
и все нормально при использовании стандартного .NET XmlSerializer
:
<?xml version="1.0" encoding="utf-16"?>
<axf version="1.0.0" createdAt="2011-10-20T13:11:40" xmlns="http://schemas.***.ru/axf/axf-1.0.0">
<itineraries>
<!-- -->
</itineraries>
</axf>
Теперь, когда мы пытаемсяиспользуйте этот класс в пустой службе WCF:
[OperationContract]
AxfDocument GetItineraries(ItinerariesQuery query);
фактический документ XML, который отправляется на сторону клиента, выглядит следующим образом:
<GetItinerariesResult version="1.0.0" createdAt="2011-10-20T13:17:50" xmlns="http://tempuri.org/">
<itineraries xmlns="http://schemas.***.ru/axf/axf-1.0.0">
<!-- rest is fine, serialization code does work -->
Как согнуть WCF для отправки корневого элементакак есть и не заменить его своим?