当前位置:Gxlcms > 数据库问题 > 未安装Oracle客户端的服务器上,使用ASP.NET远程连接Oracle

未安装Oracle客户端的服务器上,使用ASP.NET远程连接Oracle

时间:2021-07-01 10:21:17 帮助过:41人阅读

,也试过把Navicat与oracle client以及服务器的版本全部统一,照样报错,最后下载Oracle 官方的sqldeveloper,一次成功,话说还是java的牛逼啊。SQLDeveloper 下载地址

 

接着,使用ADO.NET开始做Oracle连接,发布到服务器上,结果报错 System.Data.OracleClient需要Oracle客户端软件版本8.1.7或更高版本。 试过网上的方案:

1.安装inistallclient 新建环境变量 ,不行

2.web.config 连接直接写成     <add name="ClientOracle" providerName="System.Data.OracleClient" connectionString="Password=XXXX;User ID=XXXX;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXX)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" /> 还是不行

3.将oci.dll等4个dll放到System32文件夹下 还是不行

4.安装了Oracle 11g 完全版,依旧不行

5.使用ODBC方式进行连接,还是不行。。。(试的64位,32位没试)

最后的最后,使用Visual Studio Nuget下载安装Oracle.ManagedDataAccess包才成功,而且此包只需要一个DLL和web.config的配置,不需要oracle 客户端。

在生成的web.config中

  1. <configSections>
  2. <section name=<span style="color: #800000;">"</span><span style="color: #800000;">oracle.manageddataaccess.client</span><span style="color: #800000;">"</span> type=<span style="color: #800000;">"</span><span style="color: #800000;">OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342</span><span style="color: #800000;">"</span> />
  3. </configSections>
  4. <connectionStrings>
  5. <add name=<span style="color: #800000;">"</span><span style="color: #800000;">OracleDataAccess</span><span style="color: #800000;">"</span><span style="color: #ff0000;">
  6. connectionString="DATA SOURCE=<span style="color: #0000ff;">SampleDataSource</span>;PERSIST SECURITY INFO=True;USER ID=XXXX;Password=XXXX;"
  7. providerName="Oracle.ManagedDataAccess.Client" /></span>
  8. </connectionStrings>
  9. <system.data>
  10. <DbProviderFactories>
  11. <remove invariant=<span style="color: #800000;">"</span><span style="color: #800000;">Oracle.ManagedDataAccess.Client</span><span style="color: #800000;">"</span> />
  12. <add name=<span style="color: #800000;">"</span><span style="color: #800000;">ODP.NET, Managed Driver</span><span style="color: #800000;">"</span> invariant=<span style="color: #800000;">"</span><span style="color: #800000;">Oracle.ManagedDataAccess.Client</span><span style="color: #800000;">"</span> description=<span style="color: #800000;">"</span><span style="color: #800000;">Oracle Data Provider for .NET, Managed Driver</span><span style="color: #800000;">"</span> type=<span style="color: #800000;">"</span><span style="color: #800000;">Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342</span><span style="color: #800000;">"</span> />
  13. </DbProviderFactories>
  14. </system.data>
  15. <oracle.manageddataaccess.client>
  16. <version number=<span style="color: #800000;">"</span><span style="color: #800000;">*</span><span style="color: #800000;">"</span>>
  17. <dataSources>
  18. <span style="color: #ff0000;"> <dataSource alias="<span style="color: #0000ff;">SampleDataSource</span>" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XXXX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " /></span>
  19. </dataSources>
  20. </version>
  21. </oracle.manageddataaccess.client>

只需要修改标红的部分,就可以正常使用ADO.NET的方式进行连接了,在创建链接时使用 new Oracle.ManagedDataAccess.Client.OracleConnection(strConn)进行。

另外过去常用的Oracle.DataAccess(ODP.NET),走的是Unmanaged,需要oci.dll程序库,因此还需要安装Oracle Client,而且32位与64位版本是有区分的,Oracle.DataAccess.dll执行时需要存取Oracle客户端档案,还要排除NTFS权限问题,Path环境变量等问题,比较繁琐。

而Managed ODP.NET 不需要安装Oracle Client 只需要一个Oracle.ManagedDataAccess.dll就可以,而且是Any CPU 不必再为32位/64位苦恼

虽然此技术早已推出,但是还是给oracle新手们一个帮助吧

未安装Oracle客户端的服务器上,使用ASP.NET远程连接Oracle

标签:ons   java   tor   names   user   oci   客户端软件   ado.net   方法   

人气教程排行