none
WCF Reliable Messaging 1.0 from SAP RRS feed

  • Question

  • Hi,

    I have a reliable messaging problem between WCF 4.x and SAP with RM 1.0.

    Background:
    On my ISS7-Server I activated a webservice that accepts data from SAP (consumer) under RM.
    Web.config:
    ...
    <bindings>
          <wsHttpBinding>
            <binding name=""
              ...
              <reliableSession enabled="true"  ordered="true"/>
              ...
            </binding>
          </wsHttpBinding>
        </bindings>
    ...

    Problem (I deleted every http:// or www., because it's not allowed in the text until they checked my account):
    SAP sends this body to initiate the RM-Sequence (according to web_messages.svclog):
    <wsrm:CreateSequence xmlns:wsrm="schemas.xmlsoap.org/ws/2005/02/rm">
     <wsrm:AcksTo>
      <wsa:Address xmlns:wsa="schemas.xmlsoap.org/ws/2004/08/addressing">schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
     </wsrm:AcksTo>
    </wsrm:CreateSequence>

    The webservice sends a "CreateSequenceRefused"-message.

    In web_tracelog.svclog I see this exception message (translated from ge to en !):
    "An error happened during the processing of a message.
    A message with action schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence could not be analysed."

    Inner Exception:
    "Address" from namespace "schemas.xmlsoap.org/ws/2004/08/addressing" is not expected.
    The element "Address" from namespace "w3.org/2005/08/addressing" is expected."


    On "msdn.microsoft.com/de-de/library/bb924595%28v=vs.110%29.aspx" (Reliable Messaging Protocol version 1.0) you can see that:
    "The WS-Reliable Messaging February 2005 protocol is implemented in WCF by the ReliableSessionBindingElement."

    And "specs.xmlsoap.org/ws/2005/02/rm/ws-reliablemessaging.pdf" says that:
    "wsa -> schemas.xmlsoap.org/ws/2004/08/addressing"

    Queations:
    So why does WCF-RM expects "w3.org/2005/08/addressing"?
    And what can I do now that my webservice accepts the RM-Sequences from SAP?

    Thank you.

    Matthias Suess


    Wednesday, May 13, 2015 12:41 PM

Answers

  • Hi Matthias Suess,
      WS-Reliable messaging is a protocol that allows messages to be transferred reliably between nodes that implement this protocol in the presence of software component, system, or network failures.

    MSDN explained about this potential problem in the following link :
    http://msdn.microsoft.com/en-us/library/ff710229.aspx

    As described in the article like below :
      "Both products also support WS-ReliableMessaging 1.0.  However, the implementations are not interoperable.  Do not use WS-ReliableMessaging 1.0 when exchanging messages between SAP and .NET Framework."

     In fact, even though SAP and WCF both support WS-ReliableMessaging 1.0, you cannot use it - it will just give you an error like the above. You can either turn WS-RM off or use version 1.1 of WS-ReliableMessaging for your SAP to .NET WCF communications 

    Friday, May 22, 2015 7:40 AM

All replies

  • Hi Matthias Suess,

      According to this case ,I have shared the corresponding details below :
    1.As per WS Reliable Messaging Protocol version 1.0 had the following prefix & namespace :

    • wsrm >> http://schemas.xmlsoap.org/ws/2005/02/rm
    • netrm >> http://schemas.microsoft.com/ws/2006/05/rm
    • s >> http://www.w3.org/2003/05/soap-envelope
    • wsa >> http://schemas.xmlsoap.org/ws/2005/08/addressing
    • wsse >>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssecurity-secext-1.0.xsd

    2.for more information about RM : https://msdn.microsoft.com/en-us/library/bb924595(v=vs.110).aspx

    2.the root cause is Your SAP sends the RM-Sequence as xmlns:wsa ="http://schemas.xmlsoap.org/ws/2004/08/addressing  instead of xmlns:wsa ="http://schemas.xmlsoap.org/ws/2005/08/addressing” 

    3. if the service supports it, you could use the WSDualHttpBinding, which has built in support for duplex communication through WS-Addressing. In this case you would set the callback address through the WSDualHttpBinding.ClientBaseAddress property in web.config like below :
    <system.serviceModel>

        <bindings>

            <wsDualHttpBinding>

                <binding clientBaseAddress="http://client/callback" />

            </wsDualHttpBinding>

        </bindings>

        <client>

            <endpoint address="http://server/service"

                      binding="wsDualHttpBinding"

                      contract="Namespace.Service" />

        </client>

    </system.serviceModel>

    Friday, May 15, 2015 1:01 AM
  • Hello Edwin Guru Singh,

    thank you for your answer.
    But I can't see why I should use wsDualHttpBinding.

    The SAP-WS calls my WS and transfers Data to it under RM 1.0.
    First I think, with wsDualHttpBinding still the initiating "CreateSequence" from SAP will come with
    xmlns:wsa ="schemas.xmlsoap.org/ws/2004/08/addressing"
    due to specs.xmlsoap.org/ws/2005/02/rm/ws-reliablemessaging.pdf. Or am I wrong in this point?
    Second is, I have no clientBaseAddress from the SAP-WS.

    Why does Microsoft RM 1.0 expects 2005/08/addressing intead of 2004/08/addressing
    as stated in specs.xmlsoap.org/ws/2005/02/rm/ws-reliablemessaging.pdf?
    But that I think is another question...

    Thank you.

    Matthias Suess

    Friday, May 15, 2015 8:59 AM
  • Hi Matthias Suess,
      WS-Reliable messaging is a protocol that allows messages to be transferred reliably between nodes that implement this protocol in the presence of software component, system, or network failures.

    MSDN explained about this potential problem in the following link :
    http://msdn.microsoft.com/en-us/library/ff710229.aspx

    As described in the article like below :
      "Both products also support WS-ReliableMessaging 1.0.  However, the implementations are not interoperable.  Do not use WS-ReliableMessaging 1.0 when exchanging messages between SAP and .NET Framework."

     In fact, even though SAP and WCF both support WS-ReliableMessaging 1.0, you cannot use it - it will just give you an error like the above. You can either turn WS-RM off or use version 1.1 of WS-ReliableMessaging for your SAP to .NET WCF communications 

    Friday, May 22, 2015 7:40 AM
  • Hello Edwin Guru Singh,

    thank you for the link. That was the solution!

    I have made a custom binding with RM 1.1 and it works.


    Friday, May 29, 2015 6:32 AM