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. P>
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. P>
J'ai essayé de bricoler avec les autorisations sur mon répertoire Oracle, mais cela ne semblait pas aider. P>
6 Réponses :
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: P>
chemin = c: \ oracle \ product \ 11.2.0 \ client_1 \ bin p> BlockQuote>
Assurez-vous que votre fichier
TNSNAMES.ORA STRT> est dans le répertoire: P> c: \ oracle \ product \ 11.2.0 \ client_1 \ Network \ admin p> blockQuote>
Vous pouvez essayer d'utiliser la chaîne de connexion suivante: p>
xxx pré> mise à jour: p>
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 strong>. P> P> P> P> >
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.
mydb = (description = (adresse = (protocole = TCP) (hôte = 192.168.56.2) (Port = 1521) (Connect_Data = (Service_name = sid_name))); P>
Utilisez la source Code à l'étape 12 Sauf la chaîne de connexion comme ci-dessous: p> ou suivez les étapes 12. p> Pour connecter la base de données Oracle a utilisé la déclaration suivante: P>
chaîne construc = "ID utilisateur = test; Mot de passe = test; Source de données = (Description = (Adresse = (Protocole = TCP) (Connect_Data = (Service_Name = SID_NAME ))) "; p>
oracleconnection con = nouvelle oracleconnection (construc);
essayer
{
con.open ();
Viewdata ["message"] = "connecté";
con.dispose ();
}
attraper (exception ex)
{ p>
ViewData ["Message"] = ex.Message;
} p> li>
C'est ça. Cela a fonctionné. P> LI>
ol> ol>
J'ai la même erreur: ORA-12154: TNS: impossible de résoudre l'identifiant de connexion spécifié p>
Lorsque j'essaie de connecter la source de données Oracle de Visual Studio. P>
Étapes pour résoudre ce problème. P>
Assurez-vous que vous avez le client Oracle installé sur votre système, également Oracle Wallet Manager installé. P>
Ouvrez Oracle Wallet Manager et ajoutez des certificats fournis par votre organisation. P> li>
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. p> li>
dans le c: \ oracle \ product \ 11.2.0.3 \ Network \ admin -> Ajouter les fichiers SQL.NET.ORA et TNSNAMES.ORA P> LI>
dans le fichier sql.net.ora, modifiez le chemin portefeuille comme créé dans l'étape 1 p> li> ol>
redémarrez votre système et commencez à créer une source de données partagée. p>
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. P>
exemple: J'ai eu abc.xyz = (description = (adresse = (protocole = TCP) (hôte = myhost) (port = myPort)) (Connect_Data = (Service_Name = myoraclesid))); P>
Je suis toujours ora-12154: TNS: Impossible de résoudre l'identifiant de connexion spécifié p>
Alors je l'ai changé, abcxyz = () et ça a fonctionné. p>
Fondamentalement, j'ai supprimé des caractères spéciaux comme. et _ dans le nom d'entrée TNS. P>
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;
Un autre scénario possible dans lequel cette erreur se produit est si vous utilisez iisexpress localement pour tester. p>
Lorsque l'entrée TNS est ajoutée / modifiée, Iisexpress doit être redémarré de sorte que la nouvelle valeur soit honorée. P>
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. P>
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. P>
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.