none
WCF-WSHttp, call to web service is mis-behaving RRS feed

  • Question

  • I am having an issue with calling a web service from Biztalk 2010.  I have read many forums on  similar issues and followed recommendations.  So far I can not get BizTalk to successfully use the web service.

    Send Port setup details.

    1  WCF type:   WCF-WSHttp  ,    

    2 The web service is used in an orchestration,   logical port is using  “specify later” option

    3 Port is a static port

    4  Operation name used in logical port  is set to  ‘LogError’ -

    <wsdl:operation name="LogError">

          <soap:operation soapAction="https://www.practicevelocity.com/PVLoggingService/LogError" style="document" />

          <wsdl:input>

    5   General tab,  for config of  SOAP Action header,  text box,  a single action  ‘soapAction’ is specified  using the string  from above, namely   -

                    https://www.practicevelocity.com/PVLoggingService/LogError

          Security tab,   security mode == None

    I seem to be missing / not understanding  which  config(s)  items are improper.   Any further ideas to check as source of error ??

     

    Error from Event Properties [ Windows log > Application ]

    Log Name:      Application

    Source:        BizTalk Server

    Date:          9/5/2013 4:30:22 PM

    Event ID:      5743

    Task Category: BizTalk Server

    Level:         Warning

    Keywords:      Classic

    User:          N/A

    Computer:      xxxxxxxxxxxxxxxxx.PracticeVelocity.com

    Description:

    The adapter failed to transmit message going to send port "SendPort_PVInfoLoggingService" with URL "http://devlogging.practicevelocity.com/13_3/EDILogService.asmx?". It will be retransmitted after the retry interval specified for this Send Port. Details:"System.ServiceModel.FaultException: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:MustUnderstand</soap:Value></soap:Code><soap:Reason><soap:Text xml:lang="en">SOAP header Action was not understood.</soap:Text></soap:Reason></soap:Fault></soap:Body></soap:Envelope>

       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)".

    Event Xml:

    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">

      <System>

        <Provider Name="BizTalk Server" />

        <EventID Qualifiers="32960">5743</EventID>

        <Level>3</Level>

        <Task>1</Task>

        <Keywords>0x80000000000000</Keywords>

        <TimeCreated SystemTime="2013-09-05T21:30:22.000000000Z" />

        <EventRecordID>58220</EventRecordID>

        <Channel>Application</Channel>

        <Computer>xxxxxxxxxxxxxxx.PracticeVelocity.com</Computer>

        <Security />

      </System>

      <EventData>

        <Data>SendPort_PVInfoLoggingService</Data>

        <Data>http://devlogging.practicevelocity.com/13_3/EDILogService.asmx?</Data>

        <Data>System.ServiceModel.FaultException: &lt;soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;&lt;soap:Body&gt;&lt;soap:Fault&gt;&lt;soap:Code&gt;&lt;soap:Value&gt;soap:MustUnderstand&lt;/soap:Value&gt;&lt;/soap:Code&gt;&lt;soap:Reason&gt;&lt;soap:Text xml:lang="en"&gt;SOAP header Action was not understood.&lt;/soap:Text&gt;&lt;/soap:Reason&gt;&lt;/soap:Fault&gt;&lt;/soap:Body&gt;&lt;/soap:Envelope&gt;

       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)</Data>

      </EventData>

    </Event>


    • Edited by george_PV Monday, September 9, 2013 6:37 PM
    Thursday, September 5, 2013 9:58 PM

Answers

  • This post I made was note very active  until  u 2 folks responded.  thank you for the review.  This one seemed sticky.  For benefit of all,  here is what worked...

    I held a 'cross-team'  swarm  on the problem.  Couple of  issues that had to be worked out on side of the service.   Initial info was that the service never replied [  not true ] .   The  one-way send was reset to send-response, then:

    1) BizTalk side, send port  type set to  WCF-Custom ,  binding type== basicHttpBinding,  this choice provided more options.   At this point all other values taken as  "default".

           The wisdl  provided by the service did include a URL response action  string.  There was cross-team discussion again about same with several  suggestions about correct value.   Resolution ,  reset back to the wisdl  provided string.

    2)  Send port properties,  'General' dialog >  Receive pipeline setting [btw set to XML Receive ],   then  over to right of pipeline dropdown  is an ellipsis,  ellipsis opens a dialog showing an option 'AllowUnrecognizaedMessage'   default is 'false',   reset to 'true'.

    The service is now connecting and 'sending'  data,  the service runs a SQL  insert statement.  The table is being updated.

    George







    • Edited by george_PV Tuesday, September 10, 2013 1:36 PM
    • Marked as answer by george_PV Tuesday, September 10, 2013 7:43 PM
    Tuesday, September 10, 2013 1:25 PM

All replies

  • You should switch over to a WCF-BasicHttpBinding and see if you have more luck since you're targeting an ASMX service.
    Tuesday, September 10, 2013 3:27 AM
  • Can you make the service call work from a plain old .NET console application or from SoapUI?  It's pretty clear the SOAP Action isn't understood so the whole WSDL would really help, but seeing the service work from something other than BizTalk is the best start. 

    I would use SOAP UI and Fiddler and I'd make sure nothing else in BizTalk is setting any BTS properties.

    -Dan


    If this answers your question, please Mark as Answer

    Tuesday, September 10, 2013 4:54 AM
  • This post I made was note very active  until  u 2 folks responded.  thank you for the review.  This one seemed sticky.  For benefit of all,  here is what worked...

    I held a 'cross-team'  swarm  on the problem.  Couple of  issues that had to be worked out on side of the service.   Initial info was that the service never replied [  not true ] .   The  one-way send was reset to send-response, then:

    1) BizTalk side, send port  type set to  WCF-Custom ,  binding type== basicHttpBinding,  this choice provided more options.   At this point all other values taken as  "default".

           The wisdl  provided by the service did include a URL response action  string.  There was cross-team discussion again about same with several  suggestions about correct value.   Resolution ,  reset back to the wisdl  provided string.

    2)  Send port properties,  'General' dialog >  Receive pipeline setting [btw set to XML Receive ],   then  over to right of pipeline dropdown  is an ellipsis,  ellipsis opens a dialog showing an option 'AllowUnrecognizaedMessage'   default is 'false',   reset to 'true'.

    The service is now connecting and 'sending'  data,  the service runs a SQL  insert statement.  The table is being updated.

    George







    • Edited by george_PV Tuesday, September 10, 2013 1:36 PM
    • Marked as answer by george_PV Tuesday, September 10, 2013 7:43 PM
    Tuesday, September 10, 2013 1:25 PM