如何修改asmx生成的样本皂?

时间:2014-04-29 00:35:16

标签: web-services soap asmx

我已经创建了一个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个输入参数,这可能是可能的),这就是微软自动生成它的方式。 。我想我只需要确认是这种情况。如果没有,解决方案会很棒。

1 个答案:

答案 0 :(得分:1)

我找到了答案 - 在我的网络方法上使用以下装饰:

<SoapDocumentMethod(ParameterStyle:=SoapParameterStyle.Bare)>