当标记具有前缀时,无法获取请求值Soap request



我有一个客户端向我发送soap请求

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://com.test">
<SOAP-ENV:Body>
<ns1:Transfer>
<TransferRequest>

<transferDescription></transferDescription>
<ccy>XOF</ccy>
</TransferRequest>
</ns1:Transfer>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

下面是我的网络方法

[return: XmlElement(ElementName = "return")]
[SoapDocumentMethod(Use = SoapBindingUse.Default)]
public TransferResponse Transfer(TransferRequest TransferRequest)
{

}
public class TransferResponse{
public string Name {get;set;}
public string Title {get;set;}
}

public class TransferRequest
{
[XmlElement(Namespace = "http://com.test")]
public string transferDescription {get;set;}
[XmlElement(Namespace = "http://com.test")]
public string ccy{get;set;}
}

当我将<ns1:Transfer>中的ns1移除为<Transfer>时,我会得到请求值,但当我像<ns1:Transfer>一样将其添加回来时,对象为null。如何处理前缀为n1 的请求

您应该添加名称空间,这样反序列化程序就会知道如何解析XML

[XmlElement(Namespace="YOUR NAMESPACE")]

在您发布xml命名空间的示例中是:

xmlns:ns1="http://com.test">

验证代码是否可以访问XML架构,然后反序列化应该可以正常工作。

您可以在这里阅读更多关于XML方案和XML命名空间的

最新更新