Сбой WSDL с многомерным массивом с WSDL.exe - PullRequest
2 голосов
/ 20 апреля 2011

У меня есть следующее в WSDL, который я потребляю;

<xsd:complexType name="SomeClassType">
  <xsd:sequence>
    <xsd:element type="xsd:string" name="errorMessage" minOccurs="1" nillable="true" maxOccurs="1">     </xsd:element>
    <xsd:element type="tp:ArrayOfArrayOfString" name="values" minOccurs="1" nillable="true" maxOccurs="1">     </xsd:element>
    <xsd:element type="xsd:boolean" name="isEmpty" minOccurs="1" maxOccurs="1">      </xsd:element>
  </xsd:sequence>
</xsd:complexType>

где

<xsd:complexType name="ArrayOfArrayOfString">
  <xsd:complexContent>
    <xsd:restriction base="soapenc:Array">
      <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[,]"></xsd:attribute>
    </xsd:restriction>
  </xsd:complexContent>
</xsd:complexType>

Однако при использовании wsdl.exe от MS (Runtime Version: 1.1.4322.573) генерируется

    public class SomeClassType {

        /// 
        public string errorMessage;

        /// 
        public string[] values;

        /// 
        public bool isEmpty;

    }

я ожидал string[,] values не string[] values

Есть ли исправление или решение этой проблемы? (кроме изменения вручную сгенерированного кода)

Ответы [ 3 ]

1 голос
/ 29 апреля 2011

Мне пришлось установить type="tp:ArrayOfArrayOfString" на type="tp:ArrayOfString" и maxOccurs="unbounded"

0 голосов
/ 20 апреля 2011

Попробуйте svcutil.exe.Желательно попробовать более новую версию .net.

0 голосов
/ 20 апреля 2011

Полагаю, вы могли бы попробовать прокси-генератор WCF (я полагаю, что WCF использует какой-то другой утилиты, а не wsdl.exe) - возможно, это было бы полезно, но если это не помогло - я думаю, что редактирование сгенерированного кода вручную - ваш единственный вариант .

...