WCF如何更改请求中的前缀
问题描述:
在我的WCF项目中,我有一个函数“添加新策略”,它带有两个参数。在这个函数的请求中,用于这两个参数的前缀是“cch”。我如何将这两个参数的前缀更改为“tem”。WCF如何更改请求中的前缀
这是请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:cch="http://schemas.datacontract.org/2004/07/CCHVisitorsInsuranceWS.NS.NewPo
licy">
<soapenv:Header/>
<soapenv:Body>
<tem:AddNewPolicy>
<!--Optional:-->
<tem:PolicyEntity>
<!--Optional:-->
<cch:PolicyNumber>?</cch:PolicyNumber>
<!--Optional:-->
<cch:eNumber>?</cch:eNumber>
</tem:PolicyEntity>
</tem:AddNewPolicy>
</soapenv:Body>
</soapenv:Envelope>
<xs:element name="AddNewPolicy">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q3="schemas.datacontract.org/2004/07/…; minOccurs="0" name="PolicyEntity" nillable="true" type="q3:PolicyEntity"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<wsdl:definitions xmlns:wsdl="schemas.xmlsoap.org/wsdl/";
xmlns:wsap="schemas.xmlsoap.org/ws/2004/08/addressing/policy";
xmlns:wsa10="w3.org/2005/08/addressing"; xmlns:tns="tempuri.org/";
xmlns:msc="schemas.microsoft.com/ws/2005/12/wsdl/contract";
xmlns:soapenc="schemas.xmlsoap.org/soap/encoding/";
xmlns:wsx="schemas.xmlsoap.org/ws/2004/09/mex";
xmlns:soap="schemas.xmlsoap.org/wsdl/soap/";
xmlns:wsam="w3.org/2007/05/addressing/metadata";
xmlns:wsa="schemas.xmlsoap.org/ws/2004/08/addressing";
xmlns:wsp="schemas.xmlsoap.org/ws/2004/09/policy";
xmlns:wsaw="w3.org/2006/05/addressing/wsdl";
xmlns:soap12="schemas.xmlsoap.org/wsdl/soap12/";
xmlns:wsu="docs.oasis-open.org/wss/2004/01/…";
xmlns:xsd="w3.org/2001/XMLSchema";
name="CCHVI"
targetNamespace="tempuri.org/">...</wsdl:definitions>
答
你的问题是,你的元素AddNewPolicy
和PolicyEntity
没有任何名称空间中定义;这就是为什么他们被分配到默认的Microsoft WCF命名空间http://tempuri.org/
。
你需要将它们定义为相同的命名空间的一部分作为PolicyEntity
型,即你的http://schemas.datacontract.org/2004/07/CCHVisitorsInsuranceWS.NS.NewPolicy
命名空间。
就我个人而言,无论何时我在生成的WSDL或XSD中看到http://tempuri.org/
,都会对我说我的命名空间有问题。一旦我彻底摆脱它,它可能是好的。
你为什么要改变? – Rao
因为请求的表单是这样的:? tem:PolicyNumber> ? tem:eNumber> –
MHH
您能显示服务接口定义吗? – spodger