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

公司服务器一直都是使用 .NET+SQLSERVER的开发方式,有个项目需要进行读取远程Oracle的需求。由于oracle 基本不会,也是一边做一遍摸索。

首先是使用工具测试是否已经联通,因为之前用mysql时都是用的Navicat,所以直接在网上下载了Navicat for Oracle,但是死活都连不上,报试过网上所有的方法,下载inistallclient ,修改OCI,加入环境变量,新建tnsnames.ora都没用,一直是Cannot load OCI DLL,126错误,也试过把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中

<configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </configSections>
<connectionStrings>
<add name="OracleDataAccess"
             connectionString="DATA SOURCE=SampleDataSource;PERSIST SECURITY INFO=True;USER ID=XXXX;Password=XXXX;"
             providerName="Oracle.ManagedDataAccess.Client" />
  </connectionStrings>
<system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XXXX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
      </dataSources>
    </version>
  </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新手们一个帮助吧

时间: 2024-08-25 00:48:45

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

C#远程连接Oracle数据库(不安装客户端)

本文 由 彭旭 创作,采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可.欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 前言由于工作需要,现需要从远程Oracle数据库获取数据.本人开始以为可以直接远程,试了下竟然不行,提示“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本.”.公司的要求就是不装客户端,没法子只好找找看有没有其他方案. Instant Oracle运气不错,还真找到一可用

Android:解决客户端从服务器上获取数据乱码的方法

向服务器发送HTTP请求,接收到的JSON包为response,用String content = EntityUtils.toString(response.getEntity(),"utf-8");解码还是出现了中文乱码,在后面加了 String name = new String(response.getBytes("iso-8859-1"), "UTF-8"); 也无济于事.想到服务器好像是用URLENCODER编了码的,怀着试一试的态度

基于TCP网络通信的自动升级程序源码分析-客户端请求服务器上的升级信息

每次升级,客户端都会获取服务器端存放在upgradefile文件夹下的需要升级的文件和升级信息配置文件(即upgradeconfig.xml文件) 我们来看一下代码 //升级信息配置文件相对应的类 ( 升级信息配置文件是由这个类转化成的) private UpgradeConfig upgradeConfig = null; //客户端存储升级配置文件的地址 是放在客户端根目录下的 (就是把服务器 upgradefile/upgradeconfig.xml下载到客户端存放的位置) string

[原创]访问未备案的阿里云服务器上搭建的网站

最近租了个阿里云服务器玩,因为没有备案,直接通过IP是无法访问网站的,所以自己摸索出了一种临时访问未备案的阿里云服务器上搭建的网站的方法. 原理很简单,阿里云会判断访问服务器的域名是否已备案,若已备案,则跳转到阿里云内部相应ip的服务器,所以我们只需要找一个阿里云备案过的域名(直接在阿里云的成功案例里面找),这里提供两个:www.php-z.com, www.pipaw.com,然后我们只需更改C:\Windows\System32\drivers\etc下的hosts文件,我的更改如下: #

未备案域名打开国内服务器上的网站(绑定国外空间并判断url后跳转引用)

场景:由于域名没备案不能绑定国内服务器,通过先绑定国外空间,在空间着陆页判断当前url,打开不同的页面.页面上通过iframe引用国内服务器上的目标网站. 实现:未备案域名打开国内服务器上的网站. 国外空间着陆页: <?php switch ($_SERVER["HTTP_HOST"]) { case "www.abc.com": header("location:abc.html"); break; case "aaa.cc&q

Windows远程连接Oracle服务器

简介 Oracle的SQLPlus是与oracle数据库进行交互的客户端工具,借助SQLPlus可以查看.修改数据库记录.在SQLPlus中,可以运行SQLPlus命令与sql语句. 主要功能 1.数据库的维护,如启动,关闭等,这一般在服务器上操作2.执行sql语句执行PL/sql3.执行sql脚本4.数据的导出,报表5.应用程序开发.测试sql/plsql6.生成新的sql脚本7.供应用程序调用,如安装程序中进行脚本的安装8.用户管理及权限维护等 实验环境 角色 Column 2 Column

尚未在 Web 服务器上注册 ASP.NET 4.0” 的解决办法

http://www.sowsoy.com/topics-537.html win7,vs2010创建.NetFramework 4框架下的Asp.Net空网站.系统提示 “尚未在 Web 服务器上注册ASP.NET 4.0.为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET4.0,按 F1 可了解更多详细信息.” 出现这个错误是因为IIS 7 采用了更安全的Web.Config管理机制,默认情况下会锁住配置项不允许更改. 修改方法: 1.win+r 运行 C:\WIN

尚未在 Web 服务器上注册 ASP.NET 2.0。为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 2.0,按 F1 可了解更多详细信息。

装了win7操作系统后,vs2010运行项目后出现“尚未在 Web 服务器上注册 ASP.NET 2.0.为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 2.0,按 F1 可了解更多详细信息.”的提示,点击确定后项目可以编译成功,但是在浏览器上运行时却提示“HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效.” 错误代码 0x80070021 这个错误是因为IIS 7 采用了更安全的Web.C

远程连接oracle

1.在安装了oracle的服务器中,通过Database Configuration Assistant工具,配置连接模式为[共享服务器模式],使oracle数据库服务支持共享!!!可能出现错误:Enterprise Manager配置失败-监听程序未启动或数据库服务未注册到该监听程序-ORACLE 11g解决方案:经过查看警告中给出的日志文件F:\develop\oracle_data\app\Administrator\cfgtoollogs\dbca\test\emConfig.log有如