none
wsHttpBinding WCF Adapter error RRS feed

  • Question

  • Hi,

    I'm trying to access a WCF Service from BizTalk Orchestration through wsHttpBinding WCF Adapter.

    WCF Service Interface:

    [OperationContract IsOneWay=true, Action="SupplyOrder")]
    void SupplyOrder(SupplyOrderRequest supplyOrderRequest);

    I had generated the Send Port through the "Add Generated Items" Binding Info XML.

    The problem i'm facing is wsHttpBinding WCF Adapter calls the WCF Service and the method executes, but still i get the warnings and error:

     

    "The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error".

     

    and again BizTalk tries to call the WCF Servcie.

    If i remove the "IsOneWay=true" then everything goes fine. But I do not want my Orchestration to wait for the WCF Service execution. My Orchestration should proceed with rest of the flow after the call to WCF Service.

    How to implement the OneWay operations for BizTalk WCF Adapters.

    Thanks & Regards,

    Prasanna J

    Wednesday, May 2, 2007 9:08 AM

Answers

  • Hi Prasanna,

     

    All WCF clients and services that communicate with the BizTalk WCF adapter are expected to be two way, with the exception of queues (such as NetMsmq). If you are using WsHttp binding, BizTalk expects a void response back from the service (or a non-void response if using a two-way send port). This is so that BizTalk knows when to delete the message from the Message Box and thereby ensuring no message loss.

     

    I hope this is helpful,

     

    Gruia

    Wednesday, May 2, 2007 3:39 PM

All replies

  • Hi Prasanna,

     

    All WCF clients and services that communicate with the BizTalk WCF adapter are expected to be two way, with the exception of queues (such as NetMsmq). If you are using WsHttp binding, BizTalk expects a void response back from the service (or a non-void response if using a two-way send port). This is so that BizTalk knows when to delete the message from the Message Box and thereby ensuring no message loss.

     

    I hope this is helpful,

     

    Gruia

    Wednesday, May 2, 2007 3:39 PM
  •  Hi  Gruia.

     

    Thanks for the reply.

     

    Can you please give your suggestion - how can I implement the following scenario:

     

    I have a one-way service and I need to call it from my Orchestration in a fire and forget manner and my Orchestration should not wait for any response from the service and it should continue with it's flow.

     

    Is the above scenario possible with the help of WCF adapters or

    Should I change the Orchestration to wait for the reply from the Service and then proceed?

     

    Thanks & Regards,

    Prasanna J

    Monday, May 7, 2007 5:59 AM
  • You can use the WCF Adapter with the WCF Service as normal.

     

    such as:

     

    Code Snippet

    public interface IMyService {

       [OperationContract(IsOneWay =false, ReplyAction="[what biztalk expects on message]")]        
           ShipOrderResponseMessage  ShipOrder(ShipOrderMessage msgShipOrder);

    }

     

     

    where ShipOrderResponse returns a message with empty body, just make sure namespaces and names match what biztalk expects.

    Wednesday, May 23, 2007 6:40 PM