Je dois obtenir une application héritée qui utilise unmanaged ODP.NET
travaillant sur une machine 64-bit
.Comment puis-je obtenir ODP.NET non géré (64 bits) fonctionnant dans ASP.NET sur 64 bits O/S?
- J'ai installé
64-bit
unmanaged ODP.NET
- J'ai vérifié que le
64-bit
unmanaged ODP.NET
fonctionne très bien en testant dans une application console - J'ai créé une application web de test avec le même code d'accès aux données que la console de travail application et une référence à la même DLL
Oracle.Data.Access
dans leGAC
que l'application console utilise. L'application Web est incapable de se connecter à la base de données. L'extrait de code n'est pas pertinent, car le code fonctionne et est très simple (voir point 2.).
Il échoue à conn.Open();
Exception.Message
est vide.
Exception.StackTrace
est pas utile:
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode,
OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object
src, String procedure, Boolean bCheck, Int32 isRecoverable) at
Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode,
OracleConnection conn, IntPtr opsErrCtx, Object src) at
Oracle.DataAccess.Client.OracleConnection.Open() at
TestODPNet.ODPNetTester.Test() in
D:\Projects\TestODPNet\TestODPNet\ODPNetTester.cs:line 27
L'application est en cours d'exécution sur Local IIS
, non IIS Express
.
Dans IIS
, "Enable 32-bit applications
" est défini sur false
. L'application cible la plate-forme x64-bit
, pas Any CPU
.
Localement, j'utilise 64-bit Windows 10
et sur le serveur, j'utilise 64-bit Windows Server 2012
. Je ne suis pas en mesure d'obtenir non géré ODP.NET
travaillant sur l'un ou l'autre. Donc, il ne semble pas que cela a à voir avec 32-bit
binaires autant que je peux dire depuis ODP.NET
et les deux OS sont tous 64-bit
.
Modifier: Le pool d'applications est (temporairement pour un test) en cours d'exécution en utilisant le même compte que l'application console, qui est l'administrateur de la machine.
Qu'est-ce qui me manque? Comment puis-je obtenir unmanaged ODP.NET (64-bit)
travaillant dans ASP.NET
sur 64-bit
O/S?
Note: Cette question semble un peu semblable à d'autres questions, mais il est pas aussi loin que je peux dire
Note 2: Oui, je sais que la méthode recommandée est d'utiliser managed ODP.NET
, mais je ne le font pas avoir le code source et ne peut donc pas faire ce changement.
ODP.NET non géré n'est pas un fichier. C'est une collection complète de fichiers dépendants et d'entrées de config/entrées de registre. Comment avez-vous obtenu Oracle.DataAccess.dll sur la machine? Si vous n'avez pas exécuté l'installateur pour le mettre là, vous devriez. Dites-nous également quelle version vous utilisez. –
Vous devriez vous concentrer sur l'obtention de l'exception pour fournir des informations car cela conduira probablement à une solution. Essayez d'attraper une exception OracleException et voyez si cela aide. –
@ChristianShay Merci d'avoir répondu. J'ai installé ODP.NET à travers le programme d'installation. J'ai changé le code pour attraper une OracleException. Exception.Message est toujours vide. Exception.InnerException est toujours null. La version de la base de données est 11.2.0.4.0 - 64bit. Les versions ODP.NET sont 2.112.1.0 (AMD64) et 4.121.1.0 (AMD64) – Zesty