2010-09-06 9 views
3

J'ai une solution de studio visuel avec une application Web ASP.NET 3.5 (hôte WCF) et un projet de test. Je voulais utiliser le Oracle Instant Client (v11, via NHibernate) pour créer des connexions Oracle sans avoir les outils client Oracle installés sur chaque machine "impliquée" (dev, serveur CI, serveur de test, serveur de production).Oracle Instant Client avec application Web

La chose étrange est que sur ma machine de développement (x86) mes tests fonctionnent sans problème, alors que mon application web me donne toujours le message d'erreur suivant: System.Data.OracleClient requires Oracle client software version 8.1.7 or greater

choses que j'exclue déjà:

  • Le dossier bin a lu & autorisations pour tout le monde execute
  • sont de la DLL non bloquées (windows 7)
  • Pr oblème se produit à la fois le développement Visual Studio Server et IIS 7
  • J'ai aussi testé cela sur une machine avec des outils clients Oracle installés et qui fonctionne

J'ai même réussi à obtenir des tests en cours d'exécution sur notre serveur x64 CI (more info).

Quelqu'un a une idée de ce qui me manque?

Répondre

3

Je vois cette erreur presque chaque fois que je configure Oracle sur une nouvelle machine.

  1. Vérifiez que le dossier bin oracle est dans votre chemin
  2. Déposer un lecture et d'exécution à tout le monde sur le dossier client (sur ma machine C: \ oracle \ product \ 10.2.0 \ client_1)
  3. La modification des autorisations peut ne pas prendre effet tant que vous n'avez pas redémarré votre ordinateur.

EDIT:

De votre commentaire, les étapes 2 et 3 ne sont pas pertinents pour Oracle Instant Client. Hoverer, je suppose que le problème est toujours que le système ne peut pas trouver les DLL Oracle Instant Client. Il serait utile de placer l'emplacement de ces DLL dans votre chemin et de voir si cela résout le problème.

De http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html

Instructions d'installation

Installation Étapes:

  1. Téléchargez les packages Instant Client appropriés pour votre plate-forme. Toutes les installations nécessitent le package Basic ou Basic Lite. Décompressez les paquets dans un répertoire unique tel que "client instantané".

  2. Définissez le chemin de chargement de la bibliothèque dans votre environnement vers le répertoire de l'étape 2 ("instantclient"). LD_LIBRARY_PATH est la variable d'environnement appropriée sur de nombreuses plateformes UNIX. Sur Windows, PATH devrait être utilisé.

  3. Commencez votre application et profitez-en.

+0

Salut, merci d'avoir regardé cela, mais la solution que je cherche est _ "sans outils client" _. C'est pour cela qu'Oracle Instant Client est créé. Je suppose que si cela fonctionne déjà dans un contexte de projet de test, cela devrait aussi fonctionner pour une application web ... – Koen

+0

Cela ne devrait pas être nécessaire. Dans le monde .NET, si les binaires sont là (xcopied) dans le dossier de l'application ("bin" dans mon cas et la plupart du temps), ils devraient être trouvés (et ils sont là, j'ai évidemment vérifié et revérifié). Le dossier bin est toujours le premier endroit où l'environnement d'exécution .NET recherche les dépendances. Cela fonctionne de la même manière dans le projet Test ... – Koen

+1

Excepté une application Web ASP.NET copie ses DLL dans un dossier Temporary ASP.NET Files pour les exécuter, de sorte que les DLL Oracle peuvent en fait se trouver dans un répertoire différent de vos DLL de programme –