10
votes

Version ASP.NET / Oracle: TNS n'a pas pu résoudre l'identifiant de connexion spécifié

J'ai une copie locale d'une application Web ASP.NET en cours d'exécution dans Visual Studio 2010. Le code est un duplicata exact du code exécuté sur mon environnement de développement.

Lorsque j'essaie de vous connecter à ma base de données Oracle via ASP.NET, il jette un "TNS n'a pas pu résoudre l'identifiant de connexion spécifié". La chose étrange est que cette base de données est dans mon fichier Tnsnames.ora, et lorsque j'utilise le lien Tnsping ou Microsoft Data pour se connecter, cela fonctionne bien.

J'ai essayé de bricoler avec les autorisations sur mon répertoire Oracle, mais cela ne semblait pas aider.


3 commentaires

parier sur un problème x86 / x64. Quelles sont l'architecture de votre environnement prod et de votre environnement?


Production / Dev Server est Windows 2003. Ma machine locale (où je suis le problème) est Windows 7 32 bit.


Une autre possibilité - si vous avez plus d'un client Oracle installé, vérifiez votre chemin et assurez-vous de regarder le fichier TNSNAMES.ora droit.


6 Réponses :


21
votes

Assurez-vous que vous avez installé le client de base de données Oracle (X86 ou X64).

Assurez-vous que vous avez le chemin configuré pour utiliser le dossier Oracle Bin:

chemin = c: \ oracle \ product \ 11.2.0 \ client_1 \ bin

Assurez-vous que votre fichier TNSNAMES.ORA est dans le répertoire:

c: \ oracle \ product \ 11.2.0 \ client_1 \ Network \ admin

Vous pouvez essayer d'utiliser la chaîne de connexion suivante: xxx

mise à jour:

Je n'ai pas cette variable d'environnement ( Parce que j'utilise la chaîne de connexion étendue) mais une personne ici et ICI suggère d'ajouter tns_admin . >


3 commentaires

OK, c'est bizarre ... Lorsque je prends les informations de connexion de mon fichier Tnsnames.ora et branchez-le dans ma chaîne de connexion, cela fonctionne bien. J'ai vérifié quel fichier tnsnames.ora à l'aide de TNSPING.


@Tim: J'ai mis à jour ma réponse. Comme je l'ai dit, je préfère ne pas vous inquiéter des tnsnames.ora et utilisez la chaîne de connexion étendue.


La chaîne de connexion étendue a fonctionné pour moi. Oracle et je ne m'entends tout simplement pas très bien. Je devrai me souvenir de cela pour mon prochain projet, donc je ne perds pas une heure ou deux de dépannage à nouveau.



1
votes
  1. Virtualbox installée 5.0.20
  2. installé Centos 7 sur VirtualBox
  3. installé Oracle 11G R2 (11.0.2)
  4. Créer une base de données
  5. Windows 10 installée sur VirtualBox
  6. installé VisualStudio Professional 2012 et étape par étape Mise à jour SP1 sur SP5
  7. Mettre à jour le gestionnaire de package Nuget
  8. Console de Manager de packages Nuget: Installez-le-package Oracle.ManageDDataaccess
  9. Créer un projet Web.
  10. garder un fichier tnsnames.ora dans le dossier Bin de projet

    TNSNAMES.ORA

    mydb = (description = (adresse = (protocole = TCP) (hôte = 192.168.56.2) (Port = 1521) (Connect_Data = (Service_name = sid_name)));

    Utilisez la source Code à l'étape 12 Sauf la chaîne de connexion comme ci-dessous: xxx

    ou suivez les étapes 12.

    1. a utilisé l'espace de noms suivant dans le code en utilisant oracle.manageddataaccess.Client; en utilisant oracle.ManagedDataaccess.types;
    2. Pour connecter la base de données Oracle a utilisé la déclaration suivante:

      chaîne construc = "ID utilisateur = test; Mot de passe = test; Source de données = (Description = (Adresse = (Protocole = TCP) (Connect_Data = (Service_Name = SID_NAME ))) ";

      oracleconnection con = nouvelle oracleconnection (construc); essayer { con.open (); Viewdata ["message"] = "connecté"; con.dispose (); } attraper (exception ex) {

      ViewData ["Message"] = ex.Message; }

    3. C'est ça. Cela a fonctionné.


0 commentaires

0
votes

J'ai la même erreur: ORA-12154: TNS: impossible de résoudre l'identifiant de connexion spécifié

Lorsque j'essaie de connecter la source de données Oracle de Visual Studio.

Étapes pour résoudre ce problème.

Assurez-vous que vous avez le client Oracle installé sur votre système, également Oracle Wallet Manager installé.

  1. Ouvrez Oracle Wallet Manager et ajoutez des certificats fournis par votre organisation.

  2. Naviguez vers 'C: \ APP \ Oracle \ Product \ 11.2.0 \ Network \ Admin \ Admin' admin '(ou Simple Dossier Structure dans votre bureau) et remplacez le "TNSNAMES.ORA" et "SQLNET. ora 'fichiers avec ci-joint.

  3. dans le c: \ oracle \ product \ 11.2.0.3 \ Network \ admin -> Ajouter les fichiers SQL.NET.ORA et TNSNAMES.ORA

  4. dans le fichier sql.net.ora, modifiez le chemin portefeuille comme créé dans l'étape 1

    redémarrez votre système et commencez à créer une source de données partagée.


0 commentaires

2
votes

Si toutes les validations ci-dessus échouent, essayez ce qui suit. C'est ce qui a résolu mon problème. C'est le nom de l'entrée TNS dans le fichier Tnsnames.ora.

exemple: J'ai eu abc.xyz = (description = (adresse = (protocole = TCP) (hôte = myhost) (port = myPort)) (Connect_Data = (Service_Name = myoraclesid)));

Je suis toujours ora-12154: TNS: Impossible de résoudre l'identifiant de connexion spécifié

Alors je l'ai changé, abcxyz = () et ça a fonctionné.

Fondamentalement, j'ai supprimé des caractères spéciaux comme. et _ dans le nom d'entrée TNS.


0 commentaires

3
votes

Utilisation de TNS:

(pour ASP.NET CORE, vous avez besoin de la variable d'environnement TNS_ADMIN pointant sur le répertoire où Tnsnames.ora est localisé) P>

Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = MyHost) (PORT = MyPort))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = MyOracleSID));
User Id = myUsername; Password = myPassword;


0 commentaires

0
votes

Un autre scénario possible dans lequel cette erreur se produit est si vous utilisez iisexpress localement pour tester.

Lorsque l'entrée TNS est ajoutée / modifiée, Iisexpress doit être redémarré de sorte que la nouvelle valeur soit honorée.

Dans mon cas, je déboguais une demande et je l'ai arrêté de modifier l'entrée TNS, mais j'ai ensuite exécuté l'application, mais la même instance iisexpress a été utilisée pour exécuter l'API.

Une fois que j'ai arrêté l'application et fermée manuellement iisexpress, j'ai pu faire correctement mes modifications sur TnsNames fonctionnent correctement lors de la prochaine exécution.


0 commentaires