Чтобы соответствовать схеме клиентов, я пытался сгенерировать клиентский прокси WCF, способный сериализоваться до структуры с корневым узлом, который выглядит следующим образом:
<quote:request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:quote="https://foo.com/services/schema/1.2/car_quote">
После некоторого чтенияМне повезло в обновлении прокси, чтобы включить необходимое пространство имен «quote», используя XmlNameSpaceDeclarations и XmlSerializerNamespaces
[System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class request { [XmlNamespaceDeclarations()] public XmlSerializerNamespaces xmlsn { get { XmlSerializerNamespaces xsn = new XmlSerializerNamespaces(); xsn.Add("quote", "https://foo.com/services/schema/1.2/car_quote"); return xsn; } set { //Just provide an empty setter. } } ...
, что обеспечивает:
<request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:quote="https://foo.com/services/schema/1.2/car_quote">
однакоозадачен тем, как генерировать элемент quote: request.
Среда: ASP.NET 3.5
Я не могу воспроизвести вашу ситуацию без некоторого WSDL для генерации прокси, но бит сериализации работает для меня, если я добавлю атрибут XmlRoot.
XmlRoot
using System.Xml.Serialization; [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [XmlRoot(Namespace="https://foo.com/services/schema/1.2/car_quote")] public partial class request { get { [XmlNamespaceDeclarations()] public XmlSerializerNamespaces xmlsn { XmlSerializerNamespaces xsn = new XmlSerializerNamespaces(); xsn.Add("quote", "https://foo.com/services/schema/1.2/car_quote"); return xsn; } } set { } }