2013-03-07 63 views
5

My udało ODP.net webapp działa lokalnie, ale przy wprowadzaniu go do serwera, to nie z powodu błędu:Oracle Zarządzane ODP.NET nie może odnaleźć tnsnames.ora

„TNS: słuchacz obecnie nie znam żądana usługa w deskryptorze połączenia "

Wygląda na to, ponieważ nie można uzyskać dostępu do pliku tnsnames.ora.

Próbowałem następujących bez powodzenia:

  • umieszczania pliku tnsnames.ora (ten sam, który działa lokalnie) w jego domu [oracle] [produktu] ... Folder \ Sieć \ Administrator .
  • Ustawienie ustawienia TNS_ADMIN w sekcji web.config zarządzanego ODP wskazującego na zmienną środowiskową.
  • Ustawienie ustawienia TNS_ADMIN w sekcji web.config zarządzanego ODP skierowanego bezpośrednio do pliku tnsnames.ora.

Na serwerze próba uruchomienia błędu wydajności tnsping TNS-03502: Nie znaleziono wiadomości 3502; Brak pliku komunikatu dla produktu = SIEĆ, obiekt = TNS

Czego mi brakuje?

+0

Czy możesz pokazać nam cenzurowaną wersję twojego ciągu połączenia i tsnames.ora? –

+0

wydaje się, że twój klient Oracle omn serwer nie jest zainstalowany poprawnie. czy to może być problem? – evgenyl

Odpowiedz

8

Spróbuj użyć connection string że nie zależy od tnsnames.ora, takich jak:

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

Mamy kilka serwerów z wieloma klientami Oracle, a ta odpowiedź zaoszczędziła nam czasu, gdy 10g i 11g zainstalowane na tym samym pudełku. – marty

+0

To jednak nie odpowiada na pytanie. –

6

Wystarczy dodać ścieżkę TNS_ADMIN do web.config lub app.config i skierować go do folderu gdzie masz plik tnsnames.ora powinien działać.

<oracle.manageddataaccess.client> 
    <version number="*"> 
     <settings> 
     <setting name="tns_admin" value="E:\oracle11\product\11.2.0\client_1\network\admin" /> 
     </settings> 
    </version> 
</oracle.manageddataaccess.client> 
+0

Czasami muszę użyć przednich ukośników w ustawieniu tns_admin. Nazwijmy to przesądem, ale wydaje się, że pomaga rozwiązać moje problemy. – matrixugly

0

Stary post, ale szukałem podobnego rozwiązania.

Wydaje mi się, że ponieważ wygląda na to, że ODP.net nie pozwala na podanie ścieżki do pliku TNS, to jeśli wiesz o ścieżce pliku, po prostu odczytaj plik programowo i ustaw zawartość pola DataSource obiektu ConnectionStringBuilder. Nie idealne, ale rozsądne obejście.