Почему мой веб-сервис WCF представляет этот объект в другом пространстве имен с разными именами полей?

Контекст: яя пытаюсь интегрироваться с DocuSign 'Служба уведомлений о подключении. Я'Мы настроили службу WCF с помощью метода DocuSignConnectUpdate, который принимает DocuSignEnvelopeInformation в качестве единственного параметра, как указано в DocuSign. Этот объект DocuSignEnvelopeInformation происходит из ссылки наих API, чтобы они могли передать этот объект моему веб-сервису, и я точно знаю, чего ожидать. DocuSign запрашивает мой служебный адрес и пространство имен, которые я настроил на их сайте.

Эта проблема: XML, который отправляет DocuSign, - это то, чего я ожидал. DocuSignEnvelopeInformation и ее дочерние элементы находятся в пространстве имен "http://www.docusign.net/API/3.0" и имена элементов соответствуют именам объектов:


    ...

Но мой веб-сервис ожидает чего-то другого, в неправильном пространстве имен и с измененными именами элементов. Вот как определяется метод DocuSignConnectUpdate в моем WSDL:


    
        
            
        
    

И вот как это определяется как тип DocuSignEnvelopeInformation в моем WSDL:


    
        
        
        
        
        
        
    

Имена элементов, такие как envelopeStatusField, являются именамичастный переменные, используемые в автоматически сгенерированном коде. Имена открытых свойств совпадают с xml, который отправляет DocuSign. Сгенерированный автоматически код также помечает каждый объект правильным пространством имен docusign, используя XmlTypeAttribute. Поэтому, глядя на автоматически сгенерированный код, я ожидаю, что мой сервис будет доволен вводом, но сгенерированный WSDL отличается, как показано выше, и мой сервис не может десериализовать xml.

Некоторый код: Автоматически сгенерированное объявление DocuSignEnvelopeInformation:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.17929")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.docusign.net/API/3.0")]
public partial class DocuSignEnvelopeInformation : object, System.ComponentModel.INotifyPropertyChanged {

    private EnvelopeStatus envelopeStatusField;

    private DocumentPDF[] documentPDFsField;

    private string timeZoneField;

    private int timeZoneOffsetField;

    private bool timeZoneOffsetFieldSpecified;

    /// 
    [System.Xml.Serialization.XmlElementAttribute(Order=0)]
    public EnvelopeStatus EnvelopeStatus {
    ...
    ...

OperationContract для единственного метода:

[SoapHeaders]
[ServiceContract(Namespace = "http:/MyNameSpace")]
public interface IDocusignEventListener
{
    [OperationContract]
    [FaultContract(typeof(ErrorMessageCollection), Action = Constants.FaultAction)]
    string DocuSignConnectUpdate(DocuSignEnvelopeInformation DocuSignEnvelopeInformation);
}

Метод, который вызывает DocuSign

[ServiceBehavior(Namespace = "http:/MyNameSpace", ConfigurationName = "DocusignEventListener")]
public class DocusignEventListener : IDocusignEventListener
{
    public string DocuSignConnectUpdate(DocuSignEnvelopeInformation DocuSignEnvelopeInformation)
   {
       ...

       return DocuSignEnvelopeInformation.EnvelopeStatus.EnvelopeID;
    }
}

Итак, опять же, вопрос в том, почему wsdl появляется таким образом? Почему объект отличается от ссылки, из которой я его извлек? И что еще более важно, я могу это исправить?

Ответы на вопрос(1)

Ваш ответ на вопрос