Невозможно использовать SOAP веб-сервис с xsd: time и xsd: date с использованием c#. NET - PullRequest
0 голосов
/ 01 мая 2020

Уже три дня я пытаюсь использовать SOAP веб-сервис в c#. net. Определение WSDL содержит элементы xsd: date и xsd: time. Также обратите внимание, что он использует пространство имен компании, с которой мы интегрируемся.

Я прошел все вопросы Stackoverflow, которые отвечают на ту же проблему, и я реализовал решение, но мне интересно, почему оно не работает для меня. В SOAP UI я могу использовать веб-сервис, поэтому с сервисом проблем нет. Я попытался создать строковые атрибуты, упомянутые в ссылках ниже, в частичном классе, а также изменил сам файл Reference.cs, но безуспешно.

Формат времени WSDL игнорируется в Visual Studio

C# SAP Soap Ошибка: значение 07: 41: 39.4780076 + 03: 00 не является допустимым временем. Он не соответствует формату XML для ABAP

Что является точным эквивалентом xsd: время в c#, DateTime или TimeSpan?

Сериализация DateTime во времени без миллисекунд и gmt

Это код c# веб-службы Reference.cs после его изменения:

[System.Xml.Serialization.XmlIgnore]
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType ="date")]
        public System.DateTime IDATE {
            get {
                return this.iDATEField;
            }
            set {
                this.iDATEField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute(ElementName = "IDATE", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, DataType = "string")]
        public string IDateString
        {
            get
            {
                return this.iDATEField.ToString("yyyy-MM-dd");
            }
            set
            {
                this.iDATEField = DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture);
            }
        }


        [System.Xml.Serialization.XmlIgnore]
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType ="time")]
        public System.DateTime ITIME {
            get {
                return this.iTIMEField;
            }
            set {
                this.iTIMEField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute(ElementName = "ITIME", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, DataType = "string")]
        public string ITimeString
        {
            get
            {
                return this.iTIMEField.ToString("HH:mm:ss");
            }
            set
            {
                this.iTIMEField = DateTime.ParseExact(value, "HH:mm:ss", CultureInfo.InvariantCulture);
            }
        }

атрибуты XML (я использую фиктивное имя, поскольку оно конфиденциально)

 [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3056.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:ABC:com:Example:nmsps")]

и здесь c#, где я добавляю входные данные для метода веб-службы (ssIDATE: net тип DateTime) Обратите внимание, что входные данные для метода веб-службы это массив объектов, здесь я добавляю только одну запись, поэтому это массив длины 1.

fdisInputRecord.IDATE = inputRecord.ssIDATE;
fdisInputRecord.ITIME = DateTime.Parse(DateTime.Now.ToString("HH:mm:ss"));

и вот исключение, которое я получаю:

Исключение: System.Web.Services.Protocols.SoapException: ошибка сервера на System.Web.Services .Protocols.SoapHttpClientProtocol.ReadResponse (SoapClientMessage сообщение, WebResponse ответ, поток responseStream, булева asyncCall) при System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String имяМетода, Object [] параметры) при OutSystems.NssFDISWebService.EAM_MeasuringDocument_WS.SI_MeasuringDocument_Out_SyncService.SI_MeasuringDocument_Out_Syn c (DT_MeasuringDocumentRequestRecords [] MT_MeasuringDocumentRequest) в OutSystems.NssFDISWebService.CssFDISWebService.MssSI_MeasuringDocument_Out_Syn c (RLFDISInputStructureRecordList ssFDISInput, RLFDISOutputStructureRecordList & ssFDISOutput)

1045 * Цените вашу помощь
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...