一.错误描述

今天在帮同事Debug的时候遇到这个问题,错误信息提示到是Data Provider的问题,首先我们看下环境.

数据库版本:Oracle 11.2.0.4.0 64位

数据库服务器:linux

应用服务器:32位windows

IIS:IIS7

.NetFramework:4.0

猜测到是没有安装.Net Framework的版本对应的Data Provider,查看web.config下面的节点:

<system.data>
<DbProviderFactories>
</DbProviderFactories>
</system.data>

并没有发现这里配置了DataProvider.

我们去对应版本的.NetFramework安装目录下的machine.config下去找这个结点

我的安装目录是:

也没有发现DataProvider配置.

到目前为止,我们就可以确定,是config里面少了配置项,现在我们来为.NetFramework添加Oracle提供的相应版本的Data Provider.

二.查看是否有相应的Data Provider

首先,确定我们系统上已有的Data Provider,因为我用的数据库是Oracle,所以我的Data Provider是Oracle提供的,Oracle的安装目录里可以查看到,我的是:

其中目录中的odp.net就是 Oracle Data Provider for .Net的缩写.

2.x是.NetFramwork 2.0版本的Data Provider(直到.NetFramework4以下,.NetFramwork3.0和.NetFramwork3.5只是加了不同的组件,但内核都是2.0)

4是.NetFramwork 2.0版本的Data Provider

它们是通过Oracle.DataAccess.dll来提供服务的.我们可以通过在vs.net命名行窗口下用gacutil.exe /l Oracle.DataAccess命令来查看安装的odp.net版本.

显示我已经安装了两个版本的Oracle Data Provider.

也可以通过在C:\Windows\assembly目录下查看Oracle.DataAccess.dll的程序集版本,处理器平台等特性.但有一个问题,我的本机查不到4.0版本的Oracle.DataAccess.dll安装信息.

但生产环境能查到,如下所示:

程序集的版本是10.2.0.100.

三.Oracle Data Provider的安装

如果没有对应的ODP.Net,需要自行安装,怎么知道你需要哪个类型哪个版本的ODP.Net呢?

这里有两个原则

1..Net应用程序与ODP.Net处理器类型保持一致,如:IIS的应用程序池是64位,那么ODP.Net的版本也要是64位的;

2..Net应用的.NetFramework版本与ODP.Net的版本也要保持一致.

下载地址(总揽):http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

64位ODP.Net下载地址:http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

32位ODP.Net下载地址:http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html

注意下载的时候,跟你的数据库版本保持一致.

以安64位ODP.Net为例:

1、下载完成后,将其解压到某个目录,比如D:\oracle11g\ODP.Net,cmd下键入命令:
D:\oracle11g\ODP.Net\x64>install.bat all c:\odp.net myhome (install all components)
上述命令将自动把所有文件复制到c:\odp.net下
2、然后转到c:\odp.net下,键入命令:
c:\odp.net>configure.bat all myhome (configure all component)
将自动向GAC中部署相应的程序集.
 

四.Oracle Data Provider的配置

安装了过后,你可以在对应的.NetFramework版本下查看machine.config里面的<system.data><DbProviderFactories>节点,如果没有,你可以在这个节点下添加.
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>

版本信息什么的,要与你前面安装的保持一致.

也可以在你的应用程序下的webconfig下面的<system.data><DbProviderFactories>节点添加上述信息.推荐在machine中添加,这样使用相应版本的.NetFramework下的应用程序就不用单独再一一配置了.
 

五.使用Oracle Data Provider提供的程序集

现在可以打开你的VS,添加Oracle Data Provider(ODP.Net)提供的程序集Oracle.DataAccess.dll了.
现在,可以使用这个Oracle提供的DLL来访问Oracle数据库了.前面的问题也迎刃而解.其他不同类型的数据库也可以按照这个思路来解决.
 

参考文档

http://www.cnblogs.com/yjmyzz/archive/2011/04/19/2020793.html

错误:找不到请求的 .Net Framework Data Provider。可能没有安装.的更多相关文章

  1. ASP.NET项目使用MYSQL数据库部署到IIS服务器找不到请求的.Net Framework Data Provider解决方案

    使用MySQL开发过程中在自己的机器上跑项目是没有问题的,但在实际部署到服务器上的时候就发生“找不到请求的.Net Framework Data Provider解决方案”错误,在排除项目本身原因之后 ...

  2. 找不到请求的 .Net Framework Data Provider。可能没有安装.

    学习中遇到的问题: 找不到请求的 .Net Framework Data Provider.可能没有安装. 找到的解决方法 解决方法: 安装Microsoft SQL Server Compact 4 ...

  3. MVC4.0 oracle 找不到请求的 .Net Framework Data Provider。可能没有安装.

    oracle 11G, MVC4.0 项目,因刚重装系统,重新安装的VS2010, ORACLE 11G 运行项目,后报错 找不到请求的 .Net Framework Data Provider.可能 ...

  4. 解决“找不到请求的 .Net Framework Data Provider。可能没有安装.”错误

    问题: 这几天在装.NET 的开发环境,在装好VS2013和Oracle 11g之后,做了一个测试项目,运行调试没问题 但是涉及到数据库相关操作,如新建数据集.连接数据库等在调试的时候则会出现如下错误 ...

  5. codesmith连接Mysql提示“找不到请求的 .Net Framework Data Provider。可能没有安装。"

    1,首先需要将MySql.Data.dll复制到codesmith安装目录下bin文件夹下,注意dll的版本 2,其次因为codesmith7采用的是.net4.0的配置文件,(64位系统)找到C:\ ...

  6. Sqlite数据库 找不到请求的 .Net Framework Data Provider。可能没有安装

      解决方法 在web.config里面添加 <system.data> <DbProviderFactories> <remove invariant="Sy ...

  7. 找不到请求的 .Net Framework Data Provider

    1.安装 mysql-connector-net-6.9.10.msi 2.修改C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine ...

  8. (mysql)找不到请求的 .Net Framework Data Provider。可能没有安装

    webconfig配置以下节点(注意版本号) <system.data> <DbProviderFactories> <add name="MySQL Data ...

  9. (mysql)找不到请求的.Net Framework Data Provider。可能没有安装

    webconfig配置以下节点(注意版本号) 将下面代码放在machine.config中文件,如何Web.config文件没有配置,需要添加 <system.data> <DbPr ...

随机推荐

  1. 如何用TypeScript开发微信小程序

    微信小程序来了!这个号称干掉传统app的玩意儿虽然目前处于内测阶段,不过目前在应用号的官方文档里已经放出了没有内测号也能使用的模拟器了. 工具和文档可以参考官方文档:https://mp.weixin ...

  2. LVS原理详解

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  3. C#设计模式(2)——简单工厂模式

    一.概念:简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创 ...

  4. PRINCE2随笔

    首先要说的是,我这篇体会是针对一定的背景的,不能算是一种通用的管理方式,只能是我自己的经验总结,能给大家平常的管理提供一点思路,我就很满足了. 先说说背景,我所在公司做的是大型桌面应用软件,简单点说就 ...

  5. MYSQL的大数据量情况下的分页查询优化

    最近做的项目需要实现一个分页查询功能,自己先看了别人写的方法: <!-- 查询 --> <select id="queryMonitorFolder" param ...

  6. Django模版语言 格式化显示 后台datatime()时间

    Django模版语言 格式化显示 后台datatime()时间 场景描述:

  7. Redis集群研究和实践(基于redis 3.0.5)

    前言 redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用.现在的2.x的稳定版本是2.8.19,也是我们项目中普遍用到的版本. redis在年初发布了3.0. ...

  8. ios 生成问题

    上午的时候遇到ios打包的时候出现问题,生成没有问题,但是安装到手机的时候出现问题,错误如下 The certificate used to sign "AppName" has ...

  9. 根据判断PC浏览器类型和手机屏幕像素自动调用不同CSS的代码

    1.媒体查询方法在 css 里面这样写 -------------------- @media screen and (min-width: 320px) and (max-width: 480px) ...

  10. webstorm卡顿问题

    近期随着项目开展,文件逐渐增大,webstrom频繁出现卡顿,而且时有崩溃现象,提示没有足够的内存来执行请求的操作,需要增加Xms设置. 解决办法: 1.找到WebStorm.exe.vmoption ...