CORRECCIÓN: La ubicación de recepción se reinicia al usar el adaptador de WCF-SQL O el adaptador de WCF-Oracle en bizTalk Adapter Pack

Se aplica a
BizTalk Adapters

Este artículo se aplica al producto siguiente:

  • BizTalk Adapter Pack 2.0
  • BizTalk Adapter Pack 2010

Síntomas

Al usar uno de los siguientes adaptadores que se incluyen en Microsoft BizTalk Adapter Pack 2.0 o en Microsoft BizTalk Adapter Pack 2010 en una ubicación de recepción, la ubicación de recepción se reinicia inesperadamente:

  • El adaptador de Windows Communication Foundation (WCF)-SQL
  • El adaptador de WCF-Oracle

Además, BizTalk Server puede encontrar la ConnectionException excepción y, a continuación, el BizTalk server puede reiniciarse después de una de las siguientes advertencias se registra en el registro de aplicaciones.

Adaptador DE WCF-SQL

Advertencia 1

Nota

"El adaptador ""WCF-SQL"" generó un mensaje de error. Detalles ""System.ObjectDisposedException: No se puede tener acceso a un objeto eliminado.
Nombre del objeto: "Transacción".
at System.Transactions.Transaction.Rollback(Exception e)
at Microsoft.Adapters.Sql.SqlAdapterInboundHandler.TryReceive(TimeSpan timeout, Message& message, IInboundReply& reply)
at Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.TryReceive(TimeSpan timeout, Message& message)
at System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive(TimeSpan timeout, RequestContext& requestContext)
at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive(TimeSpan timeout, RequestContext& requestContext)""."

Advertencia 2

Nota

"El adaptador ""WCF-SQL"" generó un mensaje de error. Detalles ""System.TimeoutException: Excepción del tipo 'System.TimeoutException' se produjo.
en Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()
at Microsoft.Adapters.Sql.ExecutionHelper.ExecuteScalar(SqlCommand sqlCommand, TimeoutHelper timeoutHelper)
at Microsoft.Adapters.Sql.SqlAdapterInboundHandler.Polling_WaitForMessage(TimeoutHelper timeoutHelper)
at Microsoft.Adapters.Sql.SqlAdapterInboundHandler.WaitForMessage(TimeSpan timeout)
at Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage(TimeSpan timeout)
at System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage(TimeSpan timeout)
at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()"."

              

adaptador de WCF-Oracle

Advertencia 1

Nota

El adaptador "WCF-Oracle" generó un mensaje de error. Detalles "Microsoft.ServiceModel.Channels.Common.ConnectionException: El tiempo de espera "00:02:00" expiró mientras se ejecutaba la función "WaitForMessage". >--- System.TimeoutException: El tiempo de espera "00:02:00" expiró mientras se ejecutaba la función "WaitForMessage".
   en Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()
   at Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout(OracleCommand command, TimeoutHelper timeoutHelper)
   at Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery(OracleCommand command, OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)
   --- Fin del seguimiento de la pila de excepción interna ---
   at Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage(OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage(TimeSpan timeout)
   at Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()".

Advertencia 2

Nota

El adaptador "WCF-Oracle" generó un mensaje de error. Detalles "System.TimeoutException: El timeout "00:02:00" expiró mientras se ejecutaba la función "WaitForMessage".
   en Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()
   at Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout(OracleCommand command, TimeoutHelper timeoutHelper)
   at Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteScalar(OracleCommand command, OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage(OracleCommonExecutionHelper executionHelper, OracleCommonConnectionWrapper conexión)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage(OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage(TimeSpan timeout)
   at Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()".

              

Causa

Este problema se produce porque la ubicación de recepción se reinicia inesperadamente cuando el método WaitForMessage genera una excepción TimeoutException.

Cuando el WaitForMessage método genera un TimeoutException excepción, el TryReceive se llama al método y, a continuación, el ADAPTADOR de WCF-SQL O el adaptador de WCF-Oracle revierte la transacción. Sin embargo, la operación de reversión puede generar una objectDisposedException excepción. Por lo tanto, se genera una de las advertencias que se mencionan en la sección "Síntomas".

Resolución

Información sobre la actualización acumulativa

For BizTalk Adapter Pack 2010

La revisión que resuelve este problema se incluye en el paquete de actualización acumulativa 2 para bizTalk Adapter Pack 2010. Para obtener más información sobre cómo obtener este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

2572999 paquete de actualización acumulativa 2 para BizTalk Adapter Pack 2010

For BizTalk Adapter Pack 2.0

La revisión que resuelve este problema se incluye en el paquete de actualización acumulativa 3 para bizTalk Adapter Pack 2.0.

Para obtener más información sobre cómo obtener el paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

2557150 paquete de actualización acumulativa 3 para BizTalk Adapter Pack 2.0

Nota Esta revisión agrega las <etiquetas TraceIdentifier> y </TraceIdentifier> necesarias en el archivo de seguimiento de WCF (.svcLog). Después de que la revisión agrega estas etiquetas, se corrige la salida en los archivos de seguimiento y la herramienta visor de seguimiento de servicio (SvcTraceViewer.exe) abre grandes archivos de seguimiento WCF más rápidamente.

Los siguientes seguimientos ::Exit no tienen las <etiquetas TraceIdentifier> y </TraceIdentifier> antes de aplicar esta revisión:

<Descripción>ExecuteNonQuery::Exit</Description>

<Descripción>OpenConnection::Exit</Description>

<Descripción>ExecuteScalar::Exit</Description>

<Descripción>Polling_WaitForMessage::Exit</Description>

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Más información

Para obtener más información sobre el método IInputChannel.WaitForMessage, visite el siguiente sitio web de MSDN:

Información general sobre el método IInputChannel.WaitForMessage Para obtener más información sobre el método IInputChannel.TryReceive, visite el siguiente sitio web de MSDN:

Información general sobre el método IInputChannel.TryReceive Para obtener más información sobre BizTalk Server revisiones, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

Información 2003907 sobre revisiones de BizTalk Server