WCF wsdl字符串数组

时间:2011-06-23 10:43:53

标签: wcf soap wsdl

如何告诉WCF使用wsdl arrayType?像这样:

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

这就是WCF正在做的事情(不是预期的)

<complexType name="ArrayOfstring">
    <sequence>
       <element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true"       type="xs:string"/>
     </sequence>
    <element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring"/>
</complexType>

2 个答案:

答案 0 :(得分:1)

找到解决方案。我必须添加它才能使它工作:[XmlSerializerFormat(Style = OperationFormatStyle.Rpc,Use = OperationFormatUse.Encoded)]

答案 1 :(得分:0)

我认为WCF不支持开箱即用,因为这是对标准XSD数据类型描述的WSDL扩展。在没有涉及Web服务的情况下,XmlSerializerDataContractSerializer都应该使用标准XSD,因此它使用普通的XSD方法。

如果您需要第一种方法,您可以自己编写WSDL + XSD,也可以尝试实现自定义export extension - 要将其用于生成WCF客户端,您还需要自定义导入扩展。