2013-07-02 6 views
5

Мы используем сборку Oracle.DataAccess.dll версии 2.102.2.20 (32 бит).Как исправить «Поставщик несовместим с версией клиента Oracle»?

Я развертывается наше приложение Web API для IIS и попытался открывающимися и закрытия соединения:

private static void CheckConnectionUsingOracleClient(string connection) 
     { 
      var logger = DiContainer.Resolve<ILogger>(); 

      try 
      { 
       logger.LogInfo("Trying to connect to " + connection); 
       // check whether you can connect to the shop using Oracle.DataAccess 
       using (var cnn = new Oracle.DataAccess.Client.OracleConnection(connection)) 
       { 
        cnn.Open(); 
        cnn.Close(); 
       } 

       logger.LogInfo("Succeeded to connect to " + connection); 
      } 
      catch (System.Exception ex) 
      { 
       logger.LogError("Failed to connect to " + connection, ex); 
      } 
     } 

На моей локальной машине это нормально, но на этом сервере, он вызывает исключение при попытке инициализировать в OracleConnection:

Инициализатор типа для Oracle.DataAccess.Client.OracleConnection ' создал исключение. ---> Oracle.DataAccess.Client.OracleException: Поставщик не совместим с версией клиента Oracle

Я установлен клиент Oracle 11.2 (32 бит) на сервере, и я могу видеть, что в GAC (c: \ windows \ assembly) сборка Oracle.DataAccess установлена ​​в 32-битной архитектуре процессора. Он отлично работает на одном из наших серверов, но не в этом.

В IIS также я установил «Включить 32-битное приложение» в пуле приложений.

Как это можно исправить? Я провел более 10 часов до тех пор, пробуя различные вещи :(

Я бы в идеале хотелось бы иметь возможность использовать Oracle.DataAccess.dll без необходимости установки клиента Oracle на сервере.

+0

Возможно, проблемы с драйвером разъема. Попробуйте удалить/установить другие версии. – PiLHA

+0

Возможный дубликат http://stackoverflow.com/questions/659341/the-provider-is-not-compatible-with-the-version-of-oracle-client – cremor

ответ

3

Oracle .DataProvider версия 2.102.2.20 decripted

2: .Net версии (может быть 1 для .Net 1 - 1.1, 2 в течение 2 - 3,5 и 4 для 4 - 4.5)

102: Oracle версии : Oracle 10.2

2,20: доступ к Oracle Data версия

Вы должны проверить

  1. .Net версии (не должна быть выше, чем ваш .Net компилятор)

  2. Oracle версия клиента (не должна превышать Версия Oracle Client)

  3. Оба клиента Oracle и Oracle.DataProvider являются 64-разрядными или Oracle.DataProvider 32 бит, а клиент Oracle - 32 би т или поддерживает устаревший режим 32 битной

+0

Я работаю с .NET 4.5. Клиент Oracle версии 11.2 установлен на другом ПК и работает нормально. Все они 32 бита. –

0

После установки убедитесь, что:

  • PATH обновляются с DLLS Oracle местоположением: \ продукт \ 12.1.0 \ client_1 \ Bin и \ продукт \ 12.1.0 \ client_1
  • Перезагрузите сервер.
  • Включить 32bit для пула приложений в IIS.
4

вы можете установить Oracle.ManagedDataAccess с помощью диспетчера пакетов консоли nuget

Pm> Install-Package Oracle.ManagedDataAccess 

ODP.NET, управляемый Driver является драйвером кода родного .NET 100%. Для подключения к Oracle Database дополнительное программное обеспечение Oracle Client не требуется.

код Обновление

using Oracle.ManagedDataAccess.Client; 
private static void CheckConnectionUsingOracleClient(string connection) 
     { 
      var logger = DiContainer.Resolve<ILogger>(); 

      try 
      { 
       logger.LogInfo("Trying to connect to " + connection); 
       // check whether you can connect to the shop using Oracle.DataAccess 
       using (var cnn = new OracleConnection(connection)) 
       { 
        cnn.Open(); 
        cnn.Close(); 
       } 

       logger.LogInfo("Succeeded to connect to " + connection); 
      } 
      catch (System.Exception ex) 
      { 
       logger.LogError("Failed to connect to " + connection, ex); 
      } 
     }