如何告诉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>
答案 0 :(得分:1)
找到解决方案。我必须添加它才能使它工作:[XmlSerializerFormat(Style = OperationFormatStyle.Rpc,Use = OperationFormatUse.Encoded)]
答案 1 :(得分:0)
我认为WCF不支持开箱即用,因为这是对标准XSD数据类型描述的WSDL扩展。在没有涉及Web服务的情况下,XmlSerializer
和DataContractSerializer
都应该使用标准XSD,因此它使用普通的XSD方法。
如果您需要第一种方法,您可以自己编写WSDL + XSD,也可以尝试实现自定义export extension - 要将其用于生成WCF客户端,您还需要自定义导入扩展。