本文適用於下列產品:
-
BizTalk 配接器套件 2.0
-
BizTalk 配接器套件 2010
徵狀
當您使用其中一個是包含在 Microsoft BizTalk 配接器套件 2.0 或 Microsoft BizTalk 配接器接收位置上的封包 2010年下列介面卡時,接收位置意外重新啟動:
-
Windows 通訊基礎 (WCF)-SQL 配接器
-
WCF Oracle 配接器
此外,BizTalk Server 可能會遇到ConnectionException例外狀況,以及 BizTalk server 可能後重新啟動其中一個下列的警告會記錄在應用程式記錄檔。
WCF SQL 配接器
警告 1
"""WCF-SQL""的配接器會產生錯誤訊息。 詳細資料 」 「 System.ObjectDisposedException: 無法存取已處置的物件。物件名稱: '交易'.at 在 Microsoft.Adapters.Sql.SqlAdapterInboundHandler.TryReceive 的 System.Transactions.Transaction.Rollback (例外狀況 e) (TimeSpan 逾時,訊息和訊息,IInboundReply 和回覆) 在Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.TryReceive (TimeSpan 等候逾時,訊息和訊息) 在 System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive (TimeSpan 逾時,RequestContext &requestContext) 在 System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive (TimeSpan 逾時,RequestContext 和 requestContext)"」。"
警告 2
"""WCF-SQL""的配接器會產生錯誤訊息。 詳細資料 」 「 System.TimeoutException: 'System.TimeoutException' 類型的例外狀況是在 thrown.at Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired ()在 Microsoft.Adapters.Sql.SqlAdapterInboundHandler.Polling_WaitForMessage (TimeoutHelper timeoutHelper),在 Microsoft.Adapters.Sql.ExecutionHelper.ExecuteScalar (sql 命令的 sql 命令,TimeoutHelper timeoutHelper)在 Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (TimeSpan 逾時),在 Microsoft.Adapters.Sql.SqlAdapterInboundHandler.WaitForMessage (TimeSpan 逾時)System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (TimeSpan 逾時),在 System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() 「 」。"
WCF Oracle 配接器
警告 1
配接器"WCF Oracle"引發錯誤訊息。 詳細資料 」 Microsoft.ServiceModel.Channels.Common.ConnectionException: 在逾時"00: 02:00"過期時執行函式"WaitForMessage"。 ---> System.TimeoutException: 在逾時"00: 02:00"執行"WaitForMessage"的函式時過期。 在 [在 Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout (OracleCommand 命令,TimeoutHelper Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()timeoutHelper) 在 Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection (在 Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery (OracleCommand 命令,OracleCommonExecutionHelper executionHelper)OracleCommonExecutionHelper executionHelper---) 的內部例外狀況堆疊追蹤---在 Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection (OracleCommonExecutionHelper executionHelper) 在結尾在 Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage (TimeSpan 逾時),在 Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (OracleCommonExecutionHelper executionHelper)在 System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (TimeSpan 逾時),在 Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (TimeSpan 逾時)System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage()"。
警告 2
配接器"WCF Oracle"引發錯誤訊息。 詳細資料 」 System.TimeoutException: 在逾時"00: 02:00"過期時執行函式"WaitForMessage"。 在 [在 Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout (OracleCommand 命令,TimeoutHelper Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()timeoutHelper) 在 Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (在 Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteScalar (OracleCommand 命令,OracleCommonExecutionHelper executionHelper)OracleCommonExecutionHelper executionHelper,OracleCommonConnectionWrapper 連線) 在 Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (OracleCommonExecutionHelper executionHelper)在 Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (TimeSpan 逾時),在 Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage (TimeSpan 逾時)在 System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() 的 System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (TimeSpan 逾時) 」。
原因
接收位置意外重新啟動WaitForMessage方法會產生「 逾時例外狀況時,就會發生這個問題。 在WaitForMessage方法產生「 逾時例外狀況時,呼叫TryReceive方法,並再 WCF SQL 配接器或 WCF Oracle 配接器復原交易。 然而,復原作業可能會產生ObjectDisposedException例外狀況。 因此,就會產生其中一個 「 徵狀 > 一節所述的警告。
解決方案
累積更新資訊
BizTalk 配接器套件 2010
解決這個問題的 hotfix 會併入 BizTalk 配接器的封包 2010年累積更新套件 2。 如需有關如何取得此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文: BizTalk 配接器的封包 2010年,2572999累積更新套件 2
BizTalk 配接器套件 2.0
累積更新套件 3 中會包含可解決這個問題的 hotfix,BizTalk 配接器套件 2.0。 如需有關如何取得累積更新套件,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文的詳細資訊:
2557150 BizTalk 配接器套件 2.0 的累積更新套件 3注意本 hotfix 會新增< TraceIdentifier >及< / TraceIdentifier >所需的 WCF 的追蹤檔 (.svcLog) 的標籤。 Hotfix 會新增這些標記之後,請更正追蹤檔案中的輸出,,,服務追蹤檢視器 」 工具 (SvcTraceViewer.exe) 可更快速地開啟大型 WCF 的追蹤檔案。 下列:: 結束追蹤缺乏< TraceIdentifier >及< / TraceIdentifier >標記之前套用這個 hotfix: < 描述 > ExecuteNonQuery::Exit < / 描述 >< 描述 >OpenConnection::Exit < / 描述 >< 描述 > ExecuteScalar::Exit < / 描述 >< 描述 > Polling_WaitForMessage::Exit < / 描述 >
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
其他相關資訊
如需有關IInputChannel.WaitForMessage方法的詳細資訊,請造訪下列 MSDN 網站:
IInputChannel.WaitForMessage 方法的一般資訊如需有關IInputChannel.TryReceive方法的詳細資訊,請造訪下列 MSDN 網站:
IInputChannel.TryReceive 方法的一般資訊如需有關 BizTalk Server hotfix 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
2003907 BizTalk Server hotfix 的相關資訊