WCF 服务通过 SOAP 1.1 接受 xCBL XML

WCF service to accept xCBL XML via SOAP 1.1

我的任务是开发一个 Web 服务端点来接受来自客户中间件系统的采购订单。

如何创建一个 WCF 服务来通过 SOAP 1.1 接受这个给定的负载(例如客户)?

以下为节选

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns0:Order xmlns:ns0 = "rrn:org.xcbl:schemas/xcbl/v4_0/ordermanagement/v1_0/ordermanagement.xsd">
  <ns0:OrderHeader>
    <ns0:OrderNumber>
      <ns0:BuyerOrderNumber>3000278673</ns0:BuyerOrderNumber>
    </ns0:OrderNumber>
    <ns0:OrderIssueDate>2012-03-06T14:04:09</ns0:OrderIssueDate>
    <ns0:OrderReferences>
      <ns0:AccountCode>
        <ns1:RefNum xmlns:ns1 = "rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">TEST CUSTOMER</ns1:RefNum>
      </ns0:AccountCode>
      <ns0:OtherOrderReferences>
        <ns1:ReferenceCoded xmlns:ns1 = "rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">
          <ns1:ReferenceTypeCoded>DocumentNumber</ns1:ReferenceTypeCoded>


    <ns1:ReferenceTypeCodedOther>3000278673</ns1:ReferenceTypeCodedOther>
      <ns1:PrimaryReference>
        <ns1:RefNum/>
      </ns1:PrimaryReference>
      <ns1:ReferenceDescription>IDoc Number</ns1:ReferenceDescription>
    </ns1:ReferenceCoded>
  </ns0:OtherOrderReferences>
</ns0:OrderReferences>

我试图从中创建一个 XSD 并通过它生成 类 但它失败了,因为它无法识别某些类型。

完整文档:(WSDL definition) (XCBL_PO_SOAP definition) (xCBL Schema)

我有两个问题

1.如何从中创建所需的服务接口?

或者替代

2。当供应商传输上述有效载荷时,我可以将我的 wcf 服务建模为只接受一个字符串,然后使用 LINQ 查询 XML? 当客户说他们使用 xCBL 和 SOAP 1.1 时,这是一个可行的方法?

        //Example
        public string SubmitPurchaseOrder(string XMLPayload){
          return ProcessXmlThroughLinq(XMLPayload);
        }

对于面临类似问题的任何人,请使用 svcutil.exe。

//The WSDL file(s) is in C:\test\.
svcutil.exe /t:code /serviceContract /out:"C:\test\PurchaseOrder.cs" "C:\test\*"

PS。不要担心它在 SOAP Headers 中没有任何 SOAPAction。消息 body 命名空间将向服务指示要使用的操作。