In questo articolo si applica al seguente prodotto:
-
BizTalk Adapter Pack 2.0
-
BizTalk Adapter Pack 2010
Sintomi
Quando si utilizza una delle seguenti schede inclusi in Microsoft BizTalk Adapter Pack 2.0 o Microsoft BizTalk Adapter Pack 2010 su un indirizzo di ricezione, l'indirizzo di ricezione viene riavviato inaspettatamente:
-
Windows Communication Foundation (WCF)-adapter SQL
-
L'adattatore WCF-Oracle
Inoltre, BizTalk Server può verificarsi l'eccezione di ConnectionException e quindi BizTalk server venga riavviato dopo uno dei seguenti messaggi di avviso viene registrato nel registro dell'applicazione.
Adattatore WCF-SQL
Avviso 1
"La scheda""WCF-SQL" "generato un messaggio di errore. Dettagli "" System. ObjectDisposedException: Impossibile accedere a un oggetto eliminato. Nome oggetto: 'Transazione'.at System.Transactions.Transaction.Rollback (Exception e) in Microsoft.Adapters.Sql.SqlAdapterInboundHandler.TryReceive (timeout TimeSpan, messaggio & messaggio, IInboundReply e risposta) in Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.TryReceive (timeout TimeSpan, messaggio & messaggio) in System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive (timeout TimeSpan, RequestContext & requestContext) in System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive (timeout TimeSpan, RequestContext & requestContext) "". "
Avviso 2
"La scheda""WCF-SQL" "generato un messaggio di errore. Dettagli "" TimeoutException: eccezione di tipo 'System. TimeoutException' era () Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired thrown.at in Microsoft.Adapters.Sql.ExecutionHelper.ExecuteScalar (SqlCommand sqlCommand, TimeoutHelper timeoutHelper) in Microsoft.Adapters.Sql.SqlAdapterInboundHandler.Polling_WaitForMessage (TimeoutHelper timeoutHelper) in Microsoft.Adapters.Sql.SqlAdapterInboundHandler.WaitForMessage (TimeSpan timeout) in Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (TimeSpan timeout) in System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (TimeSpan timeout) in System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()"". "
Adattatore WCF-Oracle
Avviso 1
La scheda "WCF-Oracle" generato un messaggio di errore. Dettagli "Microsoft.ServiceModel.Channels.Common.ConnectionException: il timeout" 00: 02:00 "scaduto durante l'esecuzione della funzione"WaitForMessage". TimeoutException--->: il timeout "00: 02:00" scaduto durante l'esecuzione della funzione "WaitForMessage". in Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired() in Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout (comando OracleCommand, TimeoutHelper timeoutHelper) in Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery (comando OracleCommand, OracleCommonExecutionHelper executionHelper) in Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection ( OracleCommonExecutionHelper executionHelper)---fine della traccia dello stack eccezione interna---in Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection (OracleCommonExecutionHelper executionHelper) in Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (OracleCommonExecutionHelper executionHelper) in Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage (TimeSpan timeout) in Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (TimeSpan timeout) in System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (TimeSpan timeout) in System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() ".
Avviso 2
La scheda "WCF-Oracle" generato un messaggio di errore. Dettagli "TimeoutException: il timeout" 00: 02:00 "scaduto durante l'esecuzione della funzione"WaitForMessage". in Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired() in Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout (comando OracleCommand, TimeoutHelper timeoutHelper) in Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteScalar (comando OracleCommand, OracleCommonExecutionHelper executionHelper) in Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage ( OracleCommonExecutionHelper executionHelper, OracleCommonConnectionWrapper connessione) in Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (OracleCommonExecutionHelper executionHelper) in Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage (TimeSpan timeout) in Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (TimeSpan timeout) in System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (TimeSpan timeout) in System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() ".
Causa
Questo problema si verifica perché l'indirizzo di ricezione viene riavviato inaspettatamente quando il metodo WaitForMessage genera un'eccezione TimeoutException . Quando il metodo WaitForMessage genera un'eccezione TimeoutException , viene chiamato il metodo TryReceive e quindi la scheda di WCF-SQL o la scheda di WCF-Oracle esegue il rollback della transazione. Tuttavia, l'operazione di rollback potrebbe generare un'eccezione ObjectDisposedException . Di conseguenza, viene generato uno degli avvisi citati nella sezione "Sintomi".
Risoluzione
Informazioni sull'aggiornamento cumulativo
Per BizTalk Adapter Pack 2010
L'hotfix per risolvere questo problema è incluso nel pacchetto di aggiornamento cumulativo 2 per BizTalk Adapter Pack 2010. Per ulteriori informazioni su come ottenere il pacchetto di aggiornamento cumulativo, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:2572999pacchetto di aggiornamento cumulativo 2 per BizTalk Adapter Pack 2010
Per BizTalk Adapter Pack 2.0
L'hotfix per risolvere questo problema è incluso nel pacchetto di aggiornamento cumulativo 3 per BizTalk Adapter Pack 2.0. Per ulteriori informazioni su come ottenere il pacchetto di aggiornamento cumulativo, fare clic sul numero seguente per visualizzare l'articolo della Microsoft Knowledge Base:
2557150 Pacchetto di aggiornamento cumulativo 3 per BizTalk Adapter Pack 2.0Nota Questo hotfix aggiunge la < TraceIdentifier > e < / TraceIdentifier > tag che sono necessarie per il file di traccia WCF (. svclog). Dopo l'aggiornamento rapido consente di aggiungere questi tag, l'output nel file di traccia è stato corretto e strumento Visualizzatore di traccia del servizio (SvcTraceViewer.exe) visualizzato più rapidamente i file di traccia WCF grandi. I seguenti :: uscita< TraceIdentifier > la mancano di tracce e < / TraceIdentifier > tag prima di applicare questo hotfix: < descrizione > ExecuteNonQuery::Exit < / descrizione >< descrizione > OpenConnection::Exit < / Description >< descrizione > ExecuteScalar::Exit < / Description >< descrizione > Polling_WaitForMessage::Exit < / Description >
Stato
Microsoft ha confermato che questo problema si verifica con i prodotti elencati nella sezione "Si applica a" di questo articolo.
Ulteriori informazioni
Per ulteriori informazioni sul metodo IInputChannel.WaitForMessage , visitare il seguente sito Web MSDN:
Informazioni generali sul metodo IInputChannel.WaitForMessagePer ulteriori informazioni sul metodo IInputChannel.TryReceive , visitare il seguente sito Web MSDN:
Informazioni generali sul metodo IInputChannel.TryReceivePer ulteriori informazioni sugli aggiornamenti rapidi di BizTalk Server, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
2003907 Informazioni sugli aggiornamenti rapidi di BizTalk Server