none
wcf-adapter request-response port fails with System.NullReferenceException: Object reference not set to an instance of an object. RRS feed

  • Question

  • Hi readers!

     

    We have an orchestration that reads data from Oracle DB via wcf-oracle. Since few days ago, the RR port started to throw weird exceptions that we cannot attribute to anything. wcf-oracle request response port is configured to call a stored procedure and we have setup to use Oracle UDFs (user data types).

    As I said, it worked for few months, now it started to fail but no changes have been done on setup (windows 2008, biztalk std 2009).

    Any ideas?

    Here is the exception trace from the event viewer:

    An error occurred while processing the message, refer to the details section for more information 

    Message ID: {A32015F3-D580-4DB1-A6DD-7F648745DACA}

    Instance ID: {8E8BE2F4-93F3-43D1-88CF-627976098DB0}

    Error Description: System.NullReferenceException: Object reference not set to an instance of an object.

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.WriteComplexType(XmlDictionaryWriter writer, StructuredTypeMetadata typeMetadata, Object objVal, MetadataLookup metadataLookup, OracleCommonExecutionHelper executionHelper)

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.WriteComplexArray(XmlDictionaryWriter writer, OracleStructuredTypeMetadata typeMetadata, Object objVal, MetadataLookup mMetadataLookup, OracleCommonExecutionHelper executionHelper)

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.WriteTopLevelParameter(XmlDictionaryWriter writer, String displayName, QualifiedTypeContainer p, IOracleMetadataProperties metadataProperties, OracleParameter oracleParameter, String topLevelNameSpace)

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.WriteParameters(XmlDictionaryWriter writer)

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.OnWriteBodyContents(XmlDictionaryWriter writer)

       at System.ServiceModel.Channels.BodyWriter.WriteBodyContents(XmlDictionaryWriter writer)

       at System.ServiceModel.Channels.BodyWriterMessage.OnWriteBodyContents(XmlDictionaryWriter writer)

       at System.ServiceModel.Channels.Message.WriteBodyContents(XmlDictionaryWriter writer)

       at Microsoft.Adapters.AdapterUtilities.AdapterMessage.OnWriteBodyContents(XmlDictionaryWriter writer)

       at System.ServiceModel.Channels.Message.WriteBodyContents(XmlDictionaryWriter writer)

       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfMarshaller.CreateBizTalkMessageStream(Message wcfMessage, IAdapterConfigInboundMessageMarshalling config)

       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfMarshaller.CreateBizTalkMessage(IBaseMessageFactory messageFactory, IAdapterConfigInboundMessageMarshalling marshallingConfig, Message wcfMessage)

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

     

     

    Microsoft.XLANGs.Core.XlangSoapException: An error occurred while processing the message, refer to the details section for more information 

    Message ID: {A32015F3-D580-4DB1-A6DD-7F648745DACA}

    Instance ID: {8E8BE2F4-93F3-43D1-88CF-627976098DB0}

    Error Description: System.NullReferenceException: Object reference not set to an instance of an object.

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.WriteComplexType(XmlDictionaryWriter writer, StructuredTypeMetadata typeMetadata, Object objVal, MetadataLookup metadataLookup, OracleCommonExecutionHelper executionHelper)

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.WriteComplexArray(XmlDictionaryWriter writer, OracleStructuredTypeMetadata typeMetadata, Object objVal, MetadataLookup mMetadataLookup, OracleCommonExecutionHelper executionHelper)

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.WriteTopLevelParameter(XmlDictionaryWriter writer, String displayName, QualifiedTypeContainer p, IOracleMetadataProperties metadataProperties, OracleParameter oracleParameter, String topLevelNameSpace)

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.WriteParameters(XmlDictionaryWriter writer)

       at Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.OnWriteBodyContents(XmlDictionaryWriter writer)

       at System.ServiceModel.Channels.BodyWriter.WriteBodyContents(XmlDictionaryWriter writer)

       at System.ServiceModel.Channels.BodyWriterMessage.OnWriteBodyContents(XmlDictionaryWriter writer)

       at System.ServiceModel.Channels.Message.WriteBodyContents(XmlDictionaryWriter writer)

       at Microsoft.Adapters.AdapterUtilities.AdapterMessage.OnWriteBodyContents(XmlDictionaryWriter writer)

       at System.ServiceModel.Channels.Message.WriteBodyContents(XmlDictionaryWriter writer)

       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfMarshaller.CreateBizTalkMessageStream(Message wcfMessage, IAdapterConfigInboundMessageMarshalling config)

       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfMarshaller.CreateBizTalkMessage(IBaseMessageFactory messageFactory, IAdapterConfigInboundMessageMarshalling marshallingConfig, Message wcfMessage)

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

     

       at Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.VerifyTransport(Envelope env, Int32 operationId, Context ctx)

       at Microsoft.XLANGs.Core.Subscription.Receive(Segment s, Context ctx, Envelope& env, Boolean topOnly)

       at Microsoft.XLANGs.Core.PortBase.GetMessageIdForSubscription(Subscription subscription, Segment currentSegment, Context cxt, Envelope& env, CachedObject location)

       at Microsoft.XLANGs.Core.PortBase.GetMessageId(Subscription subscription, Segment currentSegment, Context cxt, Envelope& env, CachedObject location)

       at eCRS.Sync2.Orchestrations.PollForRecords.segment2(StopConditions stopOn)

       at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)

    Best regards,

    Zlatko

    Thursday, December 30, 2010 2:40 PM

Answers

  • Check the message in the suspended instance and try to validate it will Response schema. If there are no other changes then response message will not validate.

    Also try to receive using PassThru pipeline and see if you are able to receive.


    Regards, Ajeet Kumar MCTS Biztalk Server
    Monday, January 3, 2011 12:16 PM
  • This kind of error means you did not provide the node in the Xml document that must be there.

    Seems your Oracle Db returns nulls for some field(s).

    Check this response message, validate it with the schema command "Validate Instance".


    Leonid Ganeline [BizTalk MVP] BizTalk: History of one project architecture
    Monday, January 3, 2011 5:56 PM

All replies

  • Is it possible to share the Oracle adapter traces? What values is the Stored Procedure returning?
    -- Please mark as answered if this answers your question.
    Monday, January 3, 2011 5:14 AM
  • Check the message in the suspended instance and try to validate it will Response schema. If there are no other changes then response message will not validate.

    Also try to receive using PassThru pipeline and see if you are able to receive.


    Regards, Ajeet Kumar MCTS Biztalk Server
    Monday, January 3, 2011 12:16 PM
  • This kind of error means you did not provide the node in the Xml document that must be there.

    Seems your Oracle Db returns nulls for some field(s).

    Check this response message, validate it with the schema command "Validate Instance".


    Leonid Ganeline [BizTalk MVP] BizTalk: History of one project architecture
    Monday, January 3, 2011 5:56 PM
  • Sadly Zlatko didn't confirm that the solution is indeed a solution. I just opened a new discussion, cause I'm having the same proble. 

     

    Please Andrew_Zhu do not mark as answer if you did not test it !


    BizTalk Consultant in France
    Monday, March 21, 2011 2:27 PM