Jak naprawić „dostawca nie jest kompatybilny z wersją klienta Oracle”?
Korzystamy z zespołu Oracle.DataAccess.dll w wersji 2.102.2.20 (32 bity).
Wdrożyłem naszą aplikację Web API do IIS i próbowałem otworzyć i zamknąć połączenie:
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);
}
}
Na moim komputerze lokalnym jest w porządku, ale na tym serwerze zgłasza wyjątek podczas próby zainicjowania połączenia OracleConnection:
Inicjator typu dla „Oracle.DataAccess.Client.OracleConnection” zgłosił wyjątek. ---> Oracle.DataAccess.Client.OracleException: Dostawca nie jest zgodny z wersją klienta Oracle
Zainstalowałem klienta Oracle 11.2 (32-bitowego) na serwerze i widzę, że w zestawie GAC (c: windows) zespół Oracle.DataAccess jest zainstalowany w 32-bitowej architekturze procesora. Działa dobrze na jednym z naszych serwerów, ale nie na tym.
W usługach IIS ustawiłem także „Włącz 32-bitową aplikację” w puli aplikacji.
Jak to naprawić? Do tej pory spędziłem ponad 10 godzin próbując różnych rzeczy :(
Idealnie chciałbym móc używać Oracle.DataAccess.dll bez konieczności instalowania klienta Oracle na serwerze.