2011-04-20 53 views
2

我正在使用WSDL中的以下內容:使用帶WSDL.exe的多維數組的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(運行版本:1.1.4322.573)生成

public class SomeClassType { 

     /// 
     public string errorMessage; 

     /// 
     public string[] values; 

     /// 
     public bool isEmpty; 

    } 

我預期string[,] valuesstring[] values

是有一個修復o解決這個問題? (除了手動更改生成的代碼)

+0

步驟一:也許你不應該使用.NET的過時版本來?第二步:也許你應該使用WCF呢?至少嘗試一下,看看svcutil.exe是否可以處理WSDL並生成合理的代碼。第三步:你是否至少運行了.NET 1.1的最新服務包?第四步:嘗試.NET 2.0,這在很大程度上是對.NET 1.1的修復。 – 2011-04-20 06:27:20

+0

@約翰:不是我打電話來的。陷入過去。 .NET1.1或半身像。 – Asher 2011-04-20 06:33:39

+0

@John:我已經用Visual Studio Express 2010(這是框架4的權利?)嘗試過,並且在那裏也失敗了。所以它看起來不是一個框架問題... – Asher 2011-04-20 06:43:07

回答

1

我不得不設置type="tp:ArrayOfArrayOfString"type="tp:ArrayOfString"maxOccurs="unbounded"

0

我相信你可以嘗試WCF代理生成器(我相信WCF使用其他util,而不是wsdl.exe) - 也許這將是有用的,但如果失敗 - 我認爲手動編輯生成的代碼是您唯一的選擇。

0

嘗試svcutil.exe。建議嘗試更新的.net版本。

+0

我做到了。一樣 – Asher 2011-04-20 07:24:48