下面是我用XmlSerializer用“ SvcUtil”创建的WCF代理的代码片段。 我使用代理类调用“ upload”方法,该方法返回“ uploadResponse”对象。 在此对象内,“信息”对象始终为null。我与小提琴手核实过,发现我的呼叫具有有效的请求和响应SOAP XML。
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(WrapperName="uploadResponse", WrapperNamespace="http://services.ws.svgeda.bdf.fr/", IsWrapped=true)]
public partial class uploadResponse
{
[System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://services.ws.svgeda.bdf.fr/", Name = "informations")]
[System.Xml.Serialization.XmlElement(Namespace = "http://services.ws.svgeda.bdf.fr/", ElementName= "informations")]
public ResponseUpload informations;
public uploadResponse()
{
}
public uploadResponse(ResponseUpload informations)
{
this.informations = informations;
}
}
我尝试通过将“ Name”元素添加到“ MessageBodyMemberAttribute”来调整代理,然后为空的命名空间设置值。我还添加了XmlElement来查看它是否有所更改。
下面是WCF调用返回的WS方法“ upload”的XML代码段。
<?xml version='1.0' encoding='UTF8'?>
<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>
<soapenv:Body>
<rpcOp:uploadResponse xmlns:xsi='http://www.w3.org/2001/XMLSchemainstance' xmlns:rpcOp='http://services.ws.svgeda.bdf.fr/'>
<informations xmlns:ns2='http://services.ws.svgeda.bdf.fr/'>
<idSource>?</idSource>
<idGeda>{E08AEC690000CB1D96BEB5C2299E9E4E}</idGeda>
</informations>
</rpcOp:uploadResponse>
</soapenv:Body>
</soapenv:Envelope>
知道为什么信息对象为空吗? Web服务中的所有其他方法(删除,更新)都返回一个响应对象,该对象还包含一个名为“信息”的属性,但类型不同。
感谢与问候, 克莱门特(Clement)