ASP.NET / C#连接到Oracle DB

时间:2015-10-09 22:20:50

标签: c# asp.net oracle iis visual-studio-2012

我需要使用ASP.NET网站访问oracle服务器上的视图。如果我通过visual studio调试网站(在VS2012中按F5),它会工作,但当我转到我本地IIS(LocalHost /)上托管的版本时,我收到此错误:

Oracle.DataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifier specified

我发现的很多信息都与弃用的System.Data.OracleClient有关,而我正在使用Oracle.DataAccess.dll文件版本4.112.3.0,汇编版本2.112.3.0。

我根据其他一些有类似问题的人将其运行的AppPool设置为Enable 32-Bit Application=True,我认为其他一切都是默认设置。

我尝试使用gacutil来确保它安装在gac中。

我还制作了一个可以访问数据的小型winForms应用程序。

我尝试了几个连接字符串:

这个有效:

"Data Source=SOURCE;Persist Security Info=True;Password=****;User Id=****;"

这个不行,我找不到有效的SERVICE_NAME

"user id=****;password=****;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=****)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=****)));"

我总是收到这个错误:

Oracle.DataAccess.Client.OracleException: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

我找过的地方SERVICE_NAME

我检查了我能够与第一个连接字符串建立的连接,SERVICE_NAME为空或sys$users,具体取决于我运行的查询。

我找到了三个名为tnsnames.ora的文件;一个完全空白,其他两个SERVICE_NAMEWorker<database service name>

注意:我无法访问服务器,只能访问此视图的凭据。

1 个答案:

答案 0 :(得分:0)

我找到了SERVICE_NAME这个:select sys_context('userenv','db_name') from dual;并使用了问题中的第二个连接字符串:

"user id=****;password=****;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=****)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=****)));"

感谢您的帮助。