1

我们通过 WCF SOAP 服务发布业务层中包含的功能。我们使用 VS2008 并使用可视化设计工具 ( XMLSpy ) 编写 XSD,并使用WSCF.blue生成 WSDL

在我们的一个模式中,我们实际上是一个锯齿状数组:

<xs:element name="CriteriaGroups" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="CriteriaGroup" type="SearchCriterion" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

当我生成客户端时,对服务的所有调用都失败并出现以下错误:

Unable to generate a temporary class (result=1) error CS0030: Cannot convert type 'SearchCriterion[]' to 'SearchCriterion'

网上常见的解决办法是把下面这行改成Reference.cs

public SiDemSearchCriterion[][] CriteriaGroups

至:

public SiDemSearchCriterion[] CriteriaGroups

以及来自该属性的所有引用。

但这没有用,因为它可以运行,但它不起作用。它丢弃了大部分数据。将这一切都作为列表执行的设置什么都不做。

有什么方法可以在不更改架构的情况下做到这一点?这是我们的模式,所以改变它并不是什么大问题。我宁愿不以“Microsoft Schema”的方式设计它。

合同(WSDL + XSD)集应该是独立于平台的并且基于通用标准。

所以:

  1. 有没有办法让 SVCUTIL 在不更改架构的情况下构建一个工作客户端?
  2. 如何更改架构以使 SVCUTIL 开箱即用地构建客户端?
4

0 回答 0