2017-10-06 17 views
2

J'ai créé une application .NET (4.6.1) qui se connecte à une base de données Oracle9i. Cette application fonctionne très bien sur la machine sur laquelle j'ai écrit l'application mais pas sur la machine sur laquelle l'application doit être installée. J'utilise System.Data.OracleClient. Je n'ai aucune idée de ce qui pourrait être faux. J'ai vérifié les choses suivantes.Erreur de connexion Oracle9i (ora-12154) dans l'application .NET uniquement sur certaines machines

  • Les deux machines exécutent le même client Oracle avec la même configuration des noms TNS . Cette configuration est copiée de la machine de développement où elle fonctionne.
  • Les deux machines appellent le bon fichier tnsnames.ora (validé en utilisant procmon).
  • Les deux machines peuvent se connecter avec SQLPlus très bien.
  • Les deux machines sont testées avec le même compte d'annuaire actif.
  • Les deux machines ont le nom d'utilisateur et le mot de passe corrects pour la connexion .
  • J'ai essayé une nouvelle installation du client Oracle sans succès.
  • L'application s'exécute en mode 32 sur les deux machines.
  • Les deux machines exécutent la même version de Windows 7

Quelqu'un sait quoi d'autre pourrait être la cause de ce problème?

Stacktrace de l'erreur:

2017-10-05 16:40:48.7203 - ERROR: System.Data.OracleClient.OracleException (0x80131938): ORA-12154: TNS:servicenaam kon niet worden herleid. 

    bij System.Data.OracleClient.OracleException.Check(OciErrorHandle errorHandle, Int32 rc) 
    bij System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName) 
    bij System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions) 
    bij System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) 
    bij System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) 
    bij System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) 
    bij System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) 
    bij System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 
    bij System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 
    bij System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
    bij System.Data.OracleClient.OracleConnection.Open() 
    bij QardPrint.Model.Locus.LocusFunctions.AddEmployee(Employee employee, String& errMsg) 

Répondre

0

j'ai finalement "résolu" la question. Pour une raison quelconque, la connexion oracle ne fonctionnait pas sur la machine cible si mon programme était installé dans le dossier Program Files(x86). Cependant, sur ma machine de développement, cela a fonctionné dans ce dossier. Je ne comprends toujours pas pourquoi c'est le cas. Si quelqu'un connaît la raison derrière cela s'il vous plaît laissez une réponse.