WCF服务通过SOAP 1.1接受xCBL XML

时间:2016-09-23 13:36:16

标签: .net xml wcf soap wsdl

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

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

以下是摘录

<?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);
        }

1 个答案:

答案 0 :(得分:0)

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

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

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