Получить нулевой массив при использовании прокси .net для вызова веб-службы, но xml-ответ в порядке - PullRequest
1 голос
/ 19 марта 2012

Я использую сторонний веб-сервис XML SOAP, использующий svcutil.exe для создания прокси-класса .net, но массивы не заполняются в объекте ответа при вызове методов.

Я использовал некоторый сетевой HTTP-снифферчтобы получить ответ XML, я заметил, что массивы в XML верны, но в объекте ответа они равны нулю, я попытался отредактировать файл WSDL службы, чтобы устранить проблему, но это не удалось.

РЕДАКТИРОВАТЬ: отредактировал WSDL и поместил его на свой собственный хост и добавил ссылку на службу от VS, но оставил URL-адрес конечной точки для ссылки на основную стороннюю службу.

Может любойпомогите мне внести правильные изменения в WSDL, чтобы получить ответ от внешнего веб-сервиса?

XML-ответ, который я получаю с помощью SmartSniff:

.
.
.
.
<Summary>
    <ID xsi:type="xsd:string">1</ID>
    <Name xsi:type="xsd:string">AAA</Name>
    <Errors>
        <Error>
            <Service xsi:type="xsd:string">Orders</Service>
            <Details xsi:type="xsd:string">Orders is not OK</Details></Error>
        <Error>
            <Service xsi:type="xsd:string">Details</Service>
            <Details xsi:type="xsd:string">The Details service was selected but but you do not have access to this service</Details>
        </Error>
    </Errors>
</Summary>
.
.
.
.

WSDL:

.
.
.
.
<element name="Summary" type="tns:SummaryPart" minOccurs="1" maxOccurs="1"/>
.
.
.
.
<complexType name="SummaryPart">
  <sequence>
    <element name="ID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    <element name="Name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    <element name="Errors" type="tns:ErrorArray" minOccurs="0" maxOccurs="1"/>
  </sequence>
</complexType>
<complexType name="ErrorArray">
  <sequence>
    <element name="Error" type="tns:ErrorPart" minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
</complexType>
<complexType name="ErrorPart">
  <sequence>
    <element name="Service" type="xsd:string" minOccurs="1" maxOccurs="1"/>
    <element name="Details" type="xsd:string" minOccurs="1" maxOccurs="1"/>
  </sequence>
</complexType>
.
.
.
.

У меня есть эти альтернативы, но не удалось:

1-

.
.
.
.
<element name="Summary" type="tns:SummaryPart" minOccurs="1" maxOccurs="1"/>
.
.
.
.
<complexType name="SummaryPart">
  <sequence>
    <element name="ID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    <element name="Name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    <element name="Errors" type="tns:Errors" minOccurs="0" maxOccurs="1"/>
  </sequence>
</complexType>
**<complexType name="Errors">
  <sequence>
    <element name="Error" type="tns:Error" minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
</complexType>
<complexType name="Error">
  <sequence>
    <element name="Service" type="xsd:string" minOccurs="1" maxOccurs="1"/>
    <element name="Details" type="xsd:string" minOccurs="1" maxOccurs="1"/>
  </sequence>
</complexType>**
.
.
.
.

2-

.
.
.
.
<element name="Summary" type="tns:SummaryPart" minOccurs="1" maxOccurs="1"/>
.
.
.
.
<complexType name="SummaryPart">
  <sequence>
    <element name="ID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    <element name="Name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    **<element name="Errors" type="tns:Error" minOccurs="0" maxOccurs="unbounded"/>**
  </sequence>
</complexType>
<complexType name="Error">
  <sequence>
    <element name="Service" type="xsd:string" minOccurs="1" maxOccurs="1"/>
    <element name="Details" type="xsd:string" minOccurs="1" maxOccurs="1"/>
  </sequence>
</complexType>
.
.
.
.

Любые предложенияпожалуйста * * 1023

...