DÜZELTME: BizTalk Adapter Pack'te WCF-SQL bağdaştırıcısını veya WCF-Oracle bağdaştırıcısını kullandığınızda alma konumu yeniden başlatılıyor

Uygulandığı Öğe
BizTalk Adapters

Bu makale aşağıdaki ürün için geçerlidir:

  • BizTalk Adapter Pack 2.0
  • BizTalk Adapter Pack 2010

Belirtiler

Bir alma konumunda Microsoft BizTalk Adapter Pack 2.0 veya Microsoft BizTalk Adapter Pack 2010'da bulunan aşağıdaki bağdaştırıcılardan birini kullandığınızda, alma konumu beklenmedik bir şekilde yeniden başlatılıyor:

  • Windows Communication Foundation (WCF)-SQL bağdaştırıcısı
  • WCF-Oracle bağdaştırıcısı

Ayrıca, BizTalk Server ConnectionException özel durumuyla karşılaşabilir ve Uygulama günlüğüne aşağıdaki uyarılardan biri kaydedildikten sonra BizTalk sunucusu yeniden başlatılabilir.

WCF-SQL bağdaştırıcısı

Uyarı 1

Not

""WCF-SQL"" bağdaştırıcısı bir hata iletisi oluşturdu. Ayrıntılar ""System.ObjectDisposedException: Bırakılan bir nesneye erişilemiyor.
Nesne adı: 'İşlem'.
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)""."

Uyarı 2

Not

""WCF-SQL"" bağdaştırıcısı bir hata iletisi oluşturdu. Ayrıntılar ""System.TimeoutException: 'System.TimeoutException' türü özel durumu oluşturuldu.
at 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()""."

              

WCF-Oracle bağdaştırıcı

Uyarı 1

Not

"WCF-Oracle" bağdaştırıcısı bir hata iletisi oluşturdu. Ayrıntılar "Microsoft.ServiceModel.Channels.Common.ConnectionException: "WaitForMessage" işlevi yürütülürken "00:02:00" zaman aşımı süresi doldu. >--- System.TimeoutException: "WaitForMessage" işlevi yürütülürken "00:02:00" zaman aşımı süresi doldu.
   at Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()
   at Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout(OracleCommand komutu, TimeoutHelper, timeoutHelper)
   at Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery(OracleCommand komutu, OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)
   --- İç özel durum yığın izlemesinin sonu ---
   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()".

Uyarı 2

Not

"WCF-Oracle" bağdaştırıcısı bir hata iletisi oluşturdu. Ayrıntılar "System.TimeoutException: "WaitForMessage" işlevi yürütülürken "00:02:00" zaman aşımı süresi doldu.
   at Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired()
   at Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout(OracleCommand komutu, TimeoutHelper, timeoutHelper)
   at Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteScalar(OracleCommand komutu, OracleCommonExecutionHelper executionHelper)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage(OracleCommonExecutionHelper executionHelper, OracleCommonConnectionWrapper connection)
   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()".

              

Neden

Bu sorun, WaitForMessage yöntemi bir TimeoutException özel durumu oluşturduğunda alma konumunun beklenmedik bir şekilde yeniden başlatılması nedeniyle oluşur.

WaitForMessage yöntemi bir TimeoutException özel durumu oluşturduğunda, TryReceive yöntemi çağrılır ve ardından WCF-SQL bağdaştırıcısı veya WCF-Oracle bağdaştırıcısı işlemi geri alır. Ancak, geri alma işlemi bir ObjectDisposedException özel durumu oluşturabilir. Bu nedenle, "Belirtiler" bölümünde belirtilen uyarılardan biri oluşturulur.

Çözüm

Toplu güncelleştirme bilgileri

For BizTalk Adapter Pack 2010

Bu sorunu çözen düzeltme, BizTalk Adapter Pack 2010 için toplu güncelleştirme paketi 2'de bulunur. Bu toplu güncelleştirme paketini edinme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

2572999 BizTalk Adapter Pack 2010 için toplu güncelleştirme paketi 2

For BizTalk Adapter Pack 2.0

Bu sorunu çözen düzeltme, BizTalk Adapter Pack 2.0 için toplu güncelleştirme paketi 3'e dahil edilmiştir.

Toplu güncelleştirme paketini edinme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

2557150 BizTalk Adapter Pack 2.0 için toplu güncelleştirme paketi 3

Not: Bu düzeltme, <WCF izleme dosyasında (.svcLog) gerekli olan TraceIdentifier> ve </TraceIdentifier> etiketlerini ekler. Düzeltme bu etiketleri ekledikten sonra, izleme dosyalarındaki çıkış düzeltilir ve Hizmet İzleme Görüntüleyicisi Aracı (SvcTraceViewer.exe) büyük WCF izleme dosyalarını daha hızlı açar.

Bu düzeltmeyi <uygulamadan önce aşağıdaki ::çıkış izlemelerinde TraceIdentifier> ve </TraceIdentifier> etiketleri bulunmuyordu:

<Description>ExecuteNonQuery::Exit</Description>

<Description>OpenConnection::Exit</Description>

<Description>ExecuteScalar::Exit</Description>

<Description>Polling_WaitForMessage::Exit</Description>

Durum

Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.

Daha Fazla Bilgi

IInputChannel.WaitForMessage yöntemi hakkında daha fazla bilgi için aşağıdaki MSDN web sitesini ziyaret edin:

IInputChannel.WaitForMessage yöntemi hakkında genel bilgiler IInputChannel.TryReceive yöntemi hakkında daha fazla bilgi için aşağıdaki MSDN web sitesini ziyaret edin:

IInputChannel.TryReceive yöntemi hakkında genel bilgiler BizTalk Server düzeltmeler hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

2003907 BizTalk Server düzeltmeleri hakkında bilgi