Lavorando con .Net core 3.1 e Oracle può capitare di imbattersi in questo errore:
ORA-12504: TNS: listener was not given the Service_name in connect_data
Questo capita quando nella stringa di connessione

Text

Data Source=DBProd;User Id=xxx;Password=nnnn;"
si vuole referenziare un alias, DBProd, specificato nel file tnsnames.ora:

Text

DBProd=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=10.1.3.13)
      (PORT=1521)
    )
    (CONNECT_DATA=
      (SERVICE_NAME=racProd12)
    )
  )
Il file tnsnames.ora solitamente si trova in C:\oracle\product\12.2.0\client_1\network\admin\
L'alias era perfettamente valido con il .NET 4.x.

Con la versione .Net core 3.1 deve essere indicato il nome completo nella forma:

Text

<ip>:<port>/<service name>
File: appsettings.json

JSON

{
  "ConnectionStrings": {
    "Oracle": "Data Source=10.1.3.13:1521/racPod12;User Id=xxx;Password=nnnn;"
  },
...
}
Per connettersi a Oracle usare il pacchetto Nuget Oracle.ManagedDataAccess.Core
Tags:
C#236 .NET66 .NET Core26 Oracle24
Potrebbe interessarti anche: