Este artigo aplica-se ao seguinte produto:
-
Adaptador de BizTalk Pack 2.0
-
Pacote de adaptador do BizTalk 2010
Sintomas
Quando você usa um dos seguintes adaptadores que estão incluídos no Microsoft BizTalk adaptador Pack 2.0 ou no pacote do Microsoft BizTalk adaptador 2010 em um local de recebimento, o local de recebimento reinicia inesperadamente:
-
O Windows Communication Foundation (WCF)-adaptador SQL
-
O adaptador WCF Oracle
Além disso, o BizTalk Server pode encontrar a exceção ConnectionException e, em seguida, o BizTalk server pode reiniciar depois de uma das seguintes mensagens de aviso é registrada no log do aplicativo.
Adaptador SQL do WCF
Aviso 1
"O adaptador""WCF-SQL" "gerou uma mensagem de erro. Detalhes "" System. ObjectDisposedException: não é possível acessar um objeto descartado. Nome do objeto: 'Transação'.at System.Transactions.Transaction.Rollback (exceção e) em Microsoft.Adapters.Sql.SqlAdapterInboundHandler.TryReceive (tempo limite TimeSpan, mensagem & mensagem, IInboundReply & resposta) em Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.TryReceive (tempo limite TimeSpan, mensagem & mensagem) em System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive (tempo limite TimeSpan, RequestContext & requestContext) em System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive (tempo limite TimeSpan, RequestContext & requestContext) "". "
Aviso 2
"O adaptador""WCF-SQL" "gerou uma mensagem de erro. Detalhes "" System. TimeoutException: exceção do tipo 'System. TimeoutException' foi thrown.at Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired (¶) no Microsoft.Adapters.Sql.ExecutionHelper.ExecuteScalar (SqlCommand sqlCommand, TimeoutHelper timeoutHelper), em Microsoft.Adapters.Sql.SqlAdapterInboundHandler.Polling_WaitForMessage (TimeoutHelper timeoutHelper) em Microsoft.Adapters.Sql.SqlAdapterInboundHandler.WaitForMessage (tempo limite TimeSpan) em Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (tempo limite TimeSpan) em System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (tempo limite TimeSpan) em System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()"". "
Adaptador WCF Oracle
Aviso 1
O adaptador "Oracle WCF" gerou uma mensagem de erro. Detalhes "Microsoft.ServiceModel.Channels.Common.ConnectionException: O tempo limite" 00: 02:00 "expirado ao executar a função"WaitForMessage". ---> System. TimeoutException: O tempo limite "00: 02:00" expirado ao executar a função "WaitForMessage". em Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired() em Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout (comando OracleCommand, TimeoutHelper timeoutHelper) em Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery (comando OracleCommand, OracleCommonExecutionHelper executionHelper), em Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection ( ExecutionHelper de OracleCommonExecutionHelper)---fim do rastreamento de pilha de exceção interna---em Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection (OracleCommonExecutionHelper executionHelper) em Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (OracleCommonExecutionHelper executionHelper), em Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage (tempo limite TimeSpan) em Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (tempo limite TimeSpan) em System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (tempo limite TimeSpan) em System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() ".
Aviso 2
O adaptador "Oracle WCF" gerou uma mensagem de erro. Detalhes de "System. TimeoutException: O tempo limite" 00: 02:00 "expirado ao executar a função"WaitForMessage". em Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired() em Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout (comando OracleCommand, TimeoutHelper timeoutHelper) em Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteScalar (comando OracleCommand, OracleCommonExecutionHelper executionHelper), em Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage ( OracleCommonExecutionHelper executionHelper, OracleCommonConnectionWrapper conexão) em Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (OracleCommonExecutionHelper executionHelper) em Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage (tempo limite TimeSpan) em Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (tempo limite TimeSpan) em System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (tempo limite TimeSpan) em System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() ".
Causa
Esse problema ocorre porque o local de recebimento reinicia inesperadamente quando o método WaitForMessage gera uma exceção TimeoutException . Quando o método WaitForMessage gera uma exceção TimeoutException , o método TryReceive é chamado e, em seguida, o adaptador WCF SQL ou o adaptador WCF Oracle reverte a transação. No entanto, a operação de reversão pode gerar uma exceção ObjectDisposedException . Portanto, um dos avisos que são mencionados na seção "Sintomas" é gerado.
Resolução
Informações da atualização cumulativa
Para o pacote de adaptador do BizTalk 2010
O hotfix resolve esse problema está incluído no pacote de atualização cumulativa 2 para o pacote de adaptador do BizTalk 2010. Para obter mais informações sobre como obter esse pacote de atualizações cumulativas, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:2572999pacote de atualizações cumulativas 2 para o pacote de adaptador do BizTalk 2010
Para o adaptador BizTalk Pack 2.0
O hotfix resolve esse problema está incluído no pacote de atualizações cumulativas 3 para BizTalk adaptador Pack 2.0. Para obter mais informações sobre como obter o pacote de atualizações cumulativas, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
2557150 Pacote de atualizações cumulativas 3 para pacote 2.0 do adaptador do BizTalkObservaçãoEsse hotfix adiciona o < TraceIdentifier > e < / TraceIdentifier > marcas necessárias no arquivo de rastreamento do WCF (.svcLog). Depois que o hotfix adiciona essas marcas, a saída dos arquivos de rastreamento é corrigida e Service Trace Viewer ferramenta (SvcTraceViewer.exe) abre mais rapidamente grandes arquivos de rastreamento do WCF. O seguinte :: saída rastreamentos falta o < TraceIdentifier > e < / TraceIdentifier > marcas antes de aplicar esse hotfix: < descrição > ExecuteNonQuery::Exit < / descrição >< descrição > OpenConnection::Exit < / descrição >< descrição > ExecuteScalar::Exit < / descrição >< descrição > Polling_WaitForMessage::Exit < / descrição >
Status
A Microsoft confirmou que esse é um problema nos produtos Microsoft listados na seção "Aplicável a".
Informações adicionais
Para obter mais informações sobre o método IInputChannel.WaitForMessage , visite o seguinte site da MSDN:
Informações gerais sobre o método IInputChannel.WaitForMessagePara obter mais informações sobre o método IInputChannel.TryReceive , visite o seguinte site da MSDN:
Informações gerais sobre o método IInputChannel.TryReceivePara obter mais informações sobre os hotfixes do BizTalk Server, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
2003907 Informações sobre os hotfixes do BizTalk Server