【问题标题】:Consuming WSDL with multidimentional array with WSDL.exe fails使用 WSDL.exe 使用多维数组使用 WSDL 失败
【发布时间】:2011-04-20 06:23:03
【问题描述】:

我正在使用的 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>

但是使用来自 MS(运行时版本:1.1.4322.573)的 wsdl.exe 会生成

    public class SomeClassType {

        /// 
        public string errorMessage;

        /// 
        public string[] values;

        /// 
        public bool isEmpty;

    }

我希望string[,] values 不是string[] values

是否有解决此问题的方法或解决方法? (除了手动更改生成的代码)

【问题讨论】:

  • 第一步:也许您不应该使用过时的 .NET 版本?第二步:也许您应该改用 WCF?至少尝试一下,看看 svcutil.exe 是否可以处理 WSDL 并生成合理的代码。第三步:您是否至少在运行 .NET 1.1 的最新服务包?第四步:尝试 .NET 2.0,它主要是对 .NET 1.1 的修复。
  • @John:不是我的要求。停留在过去。 .NET1.1 或失败。
  • @John:我已经用 Visual Studio Express 2010(框架 4 对吗?)进行了尝试,但它也失败了。所以看起来这不是框架问题......
  • @Asher:很遗憾听到这个消息。 RPC/Encoded 服务很难使用,如果不是不可能的话。它们不符合 WS-I BP 1.1。
  • @John:你知道如何在 WSDL 中指定多维数组类型以便 .NET 工具正确使用它吗?

标签: c# web-services wsdl.exe


【解决方案1】:

我必须将type="tp:ArrayOfArrayOfString" 设置为type="tp:ArrayOfString"maxOccurs="unbounded"

【讨论】:

    【解决方案2】:

    我相信您可以尝试使用 WCF 代理生成器(我相信 WCF 使用其他一些实用程序,而不是 wsdl.exe) - 也许这会很有用,但如果失败 - 我认为手动编辑生成的代码是您唯一的选择.

    【讨论】:

      【解决方案3】:

      试试 svcutil.exe。建议尝试更新版本的 .net。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-19
        • 1970-01-01
        • 1970-01-01
        • 2014-09-01
        • 1970-01-01
        • 2012-04-01
        相关资源
        最近更新 更多