我已经创建了一个ASMX Web服务,它可以正常工作,但是,生成的示例soap具有Web方法的名称作为soap body的根节点。
使用我的网络服务的公司希望将参数作为肥皂体的子项。
所以,而不是输出:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<My_Web_Method xmlns="http://tempuri.org/">
<My_Class>
<Address>
<AddrLine>string</AddrLine>
<Suburb>string</Suburb>
<PostCode>string</PostCode>
<State>string</State>
<StreetNumber>string</StreetNumber>
<StreetName>string</StreetName>
<StreetType>string</StreetType>
</Address>
</My_Class>
</My_Web_Method>
</soap:Body>
</soap:Envelope>
他们想要输出:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<My_Class>
<Address>
<AddrLine>string</AddrLine>
<Suburb>string</Suburb>
<PostCode>string</PostCode>
<State>string</State>
<StreetNumber>string</StreetNumber>
<StreetName>string</StreetName>
<StreetType>string</StreetType>
</Address>
</My_Class>
</soap:Body>
</soap:Envelope>
我的猜测是,将多于1个节点作为肥皂体的子节点可能无效(如果我有超过1个输入参数,这可能是可能的),这就是微软自动生成它的方式。 。我想我只需要确认是这种情况。如果没有,解决方案会很棒。
答案 0 :(得分:1)
我找到了答案 - 在我的网络方法上使用以下装饰:
<SoapDocumentMethod(ParameterStyle:=SoapParameterStyle.Bare)>