An error in the ESB Exception Handling web-service

Answered An error in the ESB Exception Handling web-service

  • Thursday, July 05, 2012 2:46 PM
     
     

    The error is without good explanation. How to get the "real" error description?

    I can call this WS from the Sample .NET application. I can see the Fault_InputMessage on the ESB Portal. I can see it in the WCF logging.

    Now I'm trying to call it from orchestration:

    I've consumed the WCF Service, no problem. One thing is interesting, it is the multi-part message type for response. The ExceptionHandling_SubmitFault_OutputMessage message type has no part. Never saw such types. Anyway...

    I'm sending the Fault_InputMessage. I can see the request in the WCF logging. But I cannot see the Fault_InputMessage on the ESB Portal.

    THere is an error in the suspended orch instance:

    "

    Uncaught exception (see the 'inner exception' below) has suspended an instance of service '...Logging.Orchestrations.SendLogEntry(2ade256c-1106-b9a1-29bf-1a6af2dbe9aa)'.
    The service instance will remain suspended until administratively resumed or terminated. 
    If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.
    InstanceId: 0f9a16e7-3c15-4912-aa37-7b3d78a8fac2
    Shape name: 
    ShapeId: 
    Exception thrown from: segment -1, progress -1
    Inner exception: Received unexpected message type '' does not match expected type '...Logging.Orchestrations.ExceptionHandling_SubmitFault_OutputMessage'.
            
    Exception type: UnexpectedMessageTypeException
    Source: Microsoft.XLANGs.Engine
    Target Site: Void VerifyMessage(Microsoft.XLANGs.Core.Envelope, System.String, Microsoft.XLANGs.Core.Context, Microsoft.XLANGs.Core.OperationInfo)
    The following is a stack trace that identifies the location where the exception o

    "

    The Fault message is :

    <Fault xmlns="http://www.w3.org/2003/05/soap-envelope">
       <Code>
          <Value>Receiver</Value>
          <Subcode>
             <Value xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</Value>
          </Subcode>
       </Code>
       <Reason>
          <Text xml:lang="en-US">There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "Pipeline " Receive Port: "ExceptionHandling.SubmitFault" URI: "/ESB.ExceptionHandlingServices.WCF/ExceptionHandling.svc" Reason: Input string was not in a correct format.</Text>
       </Reason>
       <Detail>
          <ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
             <HelpLink i:nil="true"/>
             <InnerException i:nil="true"/>
             <Message>There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "Pipeline " Receive Port: "ExceptionHandling.SubmitFault" URI: "/ESB.ExceptionHandlingServices.WCF/ExceptionHandling.svc" Reason: Input string was not in a correct format.</Message>
             <StackTrace>at Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance.EndOperation(IAsyncResult result)
       at AsyncInvokeEndEndTwoWayMethod(Object , Object[] , IAsyncResult )
       at System.ServiceModel.Dispatcher.AsyncMethodInvoker.InvokeEnd(Object instance, Object[]&amp; outputs, IAsyncResult result)
       at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeEnd(MessageRpc&amp; rpc)
       at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage7(MessageRpc&amp; rpc)
       at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</StackTrace>
             <Type>Microsoft.BizTalk.Message.Interop.BTSException</Type>
          </ExceptionDetail>
       </Detail>
    </Fault>

    Seems the ESB.ExceptionHandlingServices.WCF sends the Fault to the ESB port where something happened.


    Leonid Ganeline [BizTalk MVP] BizTalkien: Naming Conventions for the BizTalk Solutions

All Replies

  • Thursday, July 05, 2012 5:32 PM
     
     
    Leonid, Why not try submitting the fault the Usual way?
  • Thursday, July 05, 2012 8:04 PM
     
     Answered

    @Sajid Ali Baig: that is the design. We are using some wrapper to talk to the ESB which can use only ESB Web-services. There is nothing I can do :( 

    I've got the answer for my question: 

    The ESB receive port (ExceptionHandling.SubmitFault), its pipeline returns the error if the FaultMessage does not have the ExceptionObject. The schema have Min Occurs=0 for this object. Looks like the bug in ESB:

    It requires the optional record .


    Leonid Ganeline [BizTalk MVP] BizTalkien: Naming Conventions for the BizTalk Solutions