2013-03-07 23 views
5

mio gestito ODP.net webapp funziona a livello locale, ma durante la distribuzione a un server, viene a mancare con l'errore:Oracle Managed ODP.NET non riesce a trovare tnsnames.ora

"TNS: l'ascoltatore attualmente non sa di servizio richiesto nel descrittore di connessione"

da guardando intorno, sembra che questo è perché non può arrivare al file tnsnames.ora. ... \ cartella

  • Posizionamento di un file tnsnames.ora (lo stesso che opera a livello locale) in una [home Oracle] [prodotto] network \ admin:

    Ho provato quanto segue senza successo .

  • Impostazione di un'impostazione TNS_ADMIN nella sezione web.config di Managed ODP che punta alla variabile di ambiente.
  • Impostazione l'impostazione TNS_ADMIN nella sezione web.config del ODP Managed puntando direttamente al file tnsnames.ora.

Sul server, tenta di eseguire tnsping rendimenti errore TNS-03502: Messaggio 3502 non trovato; Nessun file di messaggio per il prodotto = NETWORK, impianto = TNS

Che cosa mi manca?

+0

Puoi mostrarci una versione censurata della tua stringa di connessione e tsnames.ora? –

+0

sembra che il tuo client oracle omn il server non installato correttamente. può essere il problema? – evgenyl

risposta

8

Provare a usare un connection string che non dipende da tnsnames.ora, come ad esempio:

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

Abbiamo alcuni server con più client oracle installati e questa risposta ci ha consentito di risparmiare tempo quando abbiamo installato 10g e 11g nella stessa casella. – marty

+0

Questo non risponde alla domanda posta, però. –

6

Basta aggiungere il percorso TNS_ADMIN al web.config o app.config e puntarlo alla cartella in cui si dispone un file tnsnames.ora dovrebbe funzionare.

<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

A volte devo usare le barre in avanti nell'impostazione tns_admin. Chiamala superstizione, ma sembra che aiuti a risolvere i miei problemi. – matrixugly

0

Un vecchio post, ma ho cercato una soluzione simile.

Mi sembra che come sembra che ODP.net non consenta di specificare un percorso di file TNS, quindi se si è a conoscenza del percorso del file, basta leggere il file a livello di codice e impostare il contenuto nel campo DataSource di ConnectionStringBuilder. Non ideale, ma una soluzione ragionevole.