JAVÍTÁS: A WCF-SQL-adapter vagy a WCF-Oracle-adapter használata esetén újraindul a fogadási hely a BizTalk Adapter Pack csomagban

Hatókör
BizTalk Adapters

Ez a cikk a következő termékre vonatkozik:

  • BizTalk Adapter Pack 2.0
  • BizTalk Adapter Pack 2010

Tünetek

Ha a Microsoft BizTalk Adapter Pack 2.0 vagy a Microsoft BizTalk Adapter Pack 2010 csomagban található alábbi adapterek valamelyikét használja egy vételi helyen, a fogadási hely váratlanul újraindul:

  • A Windows kommunikációs alaprendszer (WCF) – SQL-adapter
  • A WCF-Oracle adapter

Ezenkívül a BizTalk Server ConnectionException kivételt tapasztalhatott, majd a BizTalk kiszolgáló újraindulhat, miután az alábbi figyelmeztetések egyike bekerült az alkalmazásnaplóba.

WCF-SQL-adapter

1. figyelmeztetés

Megjegyzés

"The adapter ""WCF-SQL"" hibaüzenetet küldött. Részletek ""System.ObjectDisposedException: Cannot access a discard object.
Objektumnév: 'Transaction'.
itt: System.Transactions.Transaction.Rollback(Exception e)
itt: Microsoft.Adapters.Sql.AdapterInboundHandler.TryReceive(TimeSpan timeout, Message& message, IInboundReply& reply)
itt: Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.TryReceive(TimeSpan timeout, Message& message)
itt: System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive(TimeSpan timeout, RequestContext& requestContext)
itt: System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive(TimeSpan timeout, RequestContext& requestContext)""."

2. figyelmeztetés

Megjegyzés

"The adapter ""WCF-SQL"" hibaüzenetet küldött. Részletek ""System.TimeoutException: A "System.TimeoutException" típusú kivétel el lett dobva.
itt: Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()
itt: Microsoft.Adapters.Sql.ExecutionHelper.ExecuteScalar(SqlCommand, sqlCommand, TimeoutHelper timeoutHelper)
at Microsoft.Adapters.Sql.SqlAdapterInboundHandler.Polling_WaitForMessage(TimeoutHelper timeoutHelper)
itt: Microsoft.Adapters.Sql.SqlAdapterInboundHandler.WaitForMessage(TimeSpan timeout)
itt: Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage(TimeSpan timeout)
itt: System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage(TimeSpan timeout)
itt: System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()""."

              

WCF-Oracle adapter

1. figyelmeztetés

Megjegyzés

A "WCF-Oracle" adapter hibaüzenetet küldött. Részletek "Microsoft.ServiceModel.Channels.Common.ConnectionException: The timeout "00:02:00" expired when running the "WaitForMessage". ---> System.TimeoutException: A "00:02:00" időtúllépés lejárt a "WaitForMessage" függvény végrehajtásakor.
   itt: Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()
   itt: Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout(OracleCommand command, TimeoutHelper timeoutHelper)
   itt: Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery(OracleCommand command, OracleCommonExecutionHelper executionHelper)
   itt: Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)
   --- A belső kivétel veremkövetési --- vége
   itt: Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage(OracleCommonExecutionHelper executionHelper)
   itt: Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage(TimeSpan timeout)
   itt: Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage(TimeSpan timeout)
   itt: System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage(TimeSpan timeout)
   itt: System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()".

2. figyelmeztetés

Megjegyzés

A "WCF-Oracle" adapter hibaüzenetet küldött. Részletek "System.TimeoutException: A "00:02:00" időkorlát lejárt a "WaitForMessage" függvény végrehajtása közben.
   itt: Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()
   itt: Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout(OracleCommand command, TimeoutHelper timeoutHelper)
   itt: Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteScalar(OracleCommand command, OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage(OracleCommonExecutionHelper executionHelper, OracleCommonConnectionWrapper connection)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage(OracleCommonExecutionHelper executionHelper)
   itt: Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage(TimeSpan timeout)
   itt: Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage(TimeSpan timeout)
   itt: System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage(TimeSpan timeout)
   itt: System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()".

              

Ok

A probléma oka, hogy a fogadási hely váratlanul újraindult, amikor a WaitForMessage metódus TimeoutException kivételt generált.

Amikor a WaitForMessage metódus TimeoutException kivételt hoz létre, a rendszer a TryReceive metódust hívja meg, majd a WCF-SQL-adapter vagy a WCF-Oracle adapter visszavonja a tranzakciót. A visszaállítási művelet azonban létrehozhat egy ObjectDisposedException kivételt. Ezért a "Jelenségek" részben említett figyelmeztetések egyike jön létre.

Megoldás

Összegző frissítéssel kapcsolatos információk

A BizTalk Adapter Pack 2010 esetében

A problémát elhárító gyorsjavítás megtalálható a BizTalk Adapter Pack 2010 2-es összegző frissítőcsomagjában. Az összegző frissítési csomag beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2572999 2-es összegző frissítőcsomag a BizTalk Adapter Pack 2010-hez

BizTalk Adapter Pack 2.0 esetén

A problémát elhárító gyorsjavítás megtalálható a BizTalk Adapter Pack 2.0 3. összegző frissítőcsomagjában.

Az összegző frissítési csomag beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2557150 3. összegző frissítőcsomag a BizTalk Adapter Pack 2.0-hoz

Megjegyzés: Ez a gyorsjavítás hozzáadja a <WCF-nyomkövetési fájlhoz (.svcLog) szükséges TraceIdentifier> és </TraceIdentifier> címkéket. Miután a gyorsjavítás hozzáadta ezeket a címkéket, a rendszer kijavítja a nyomkövetési fájlok kimenetét, és a szolgáltatás-nyomkövetési megjelenítő (SvcTraceViewer.exe) eszköz gyorsabban megnyitja a nagy WCF-nyomkövetési fájlokat.

A gyorsjavítás alkalmazása előtt a következő ::Exit nyomkövetésekből hiányzik a <TraceIdentifier> és <a /TraceIdentifier> címke:

<Leírás>ExecuteNonQuery::Exit</Description>

<Leírás>OpenConnection::Exit</Description>

<Leírás>ExecuteScalar::Exit</Description>

<Leírás>Polling_WaitForMessage::Exit</Leírás>

Állapot

A Microsoft megerősítette, hogy ez egy olyan probléma a Microsoft-termékekben, amely az „Érintett szolgáltatás“ című szakaszban van felsorolva.

További információ

Az IInputChannel.WaitForMessage metódusról az MSDN alábbi webhelyén talál további információt:

Általános információk az IInputChannel.WaitForMessage metódusról Az IInputChannel.TryReceive metódusról az MSDN alábbi webhelyén talál további információt:

Általános információk az IInputChannel.TryReceive metódusról A BizTalk Server gyorsjavításairól a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2003907 Információ a BizTalk Server gyorsjavításokról