首页新闻找找看学习计划

Oracle 使用ODP.Net 错误

0
悬赏园豆:50 [已解决问题] 解决于 2013-07-11 18:08

先说一下环境,Windows 2008 X64+Oracle 11g+IIS6

然后再IIS上部署WCF服务,使用了“Oracle.DataAccess.dll”,WCF端其实相当于一个远程的OracleHelper,有三个方法:

[OperationContract]
int ExecuteNonQuery(CommandType cmdType, string cmdText, params OracleParameter[] commandParameters);

[OperationContract]
object ExecuteScalar(CommandType cmdType, string cmdText, params OracleParameter[] commandParameters);

[OperationContract]
DataTable ExecuteSet(CommandType cmdType, string cmdText, params OracleParameter[] commandParameters);

 

客户端不管调用上述任何一个方法,都会报这样的异常:

“Oracle.DataAccess.Client.OracleCommand”的类型初始值设定项引发异常。

 

经网上提示,在WCF的bin目录下复制了OraOps11w.dll,依然报错。

我本猿类的主页 我本猿类 | 初学一级 | 园豆:2
提问于:2013-07-11 15:00
< >
分享
最佳答案
0

OraOps11w.dll 文件的匹配版本要跟Oracle.DataAccess.dl 版本相匹配。还包括其他的oci.dll等文件。

收获园豆:50
方木一 | 菜鸟二级 |园豆:332 | 2013-07-11 15:22

这些dll都需要拷贝到WCF下的bin目录下吗?

我本猿类 | 园豆:2 (初学一级) | 2013-07-11 15:47

@我本猿类: 

是的,要跟Oracle.DataAccess.dl 同级目录下。

方木一 | 园豆:332 (菜鸟二级) | 2013-07-11 16:14

@polk6: 

我没有找到oraociei11.dll,还有你看看我这些dll的版本满足条件吗

我本猿类 | 园豆:2 (初学一级) | 2013-07-11 16:32

@我本猿类: 

OraOps11w.dll 的版本不对,要2.112.3.0 。你用的是32位的ODP.Net文件吧。邮箱有吗。我发你OraOps11w.dl 和 oraociei11.dll

方木一 | 园豆:332 (菜鸟二级) | 2013-07-11 16:36

@polk6: stone_eternity@163.com 谢谢

我本猿类 | 园豆:2 (初学一级) | 2013-07-11 16:44

@我本猿类: 

我把网盘的地址发你邮箱了,oraociei11.dll文件比较大

方木一 | 园豆:332 (菜鸟二级) | 2013-07-11 17:03

@polk6: 谢谢你!不过部署上之后报错误:ORA-12154: TNS:could not resolve the connect identifier specified。

我的环境是:Windows 2008 64位系统+Oracle 11g+IIS6,先安装的IIS6,后安装的Oracle 11g,之后就直接部署WCF的,是不是需要配置其他什么东西啊?

我本猿类 | 园豆:2 (初学一级) | 2013-07-11 17:40

@我本猿类: 

网上搜索是 连接Oracle的配置问题。我发给你C#的配置

string conn = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.3)(PORT=1521)))(CONNECT_DATA=(sid =orcl)));User Id=yl;Password=yl";

②如果用的是 tnsnames.ora 文件的连接方式

范例:

testdb =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 198.168.0.3)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
方木一 | 园豆:332 (菜鸟二级) | 2013-07-11 17:50

@polk6: 真的谢谢你了!我用第一种连接字符串可以查询数据了。而且我查看了一下服务器的tnsnames.ora文件,格式是正确的,不知道为什么没有通过,还有待研究。总之,真的谢谢你了。

我本猿类 | 园豆:2 (初学一级) | 2013-07-11 18:04

@polk6: 如果一台机子上既装了Oracle服务端又装了客户端ODP.NET,这种情况下怎么使用精简版的客户端,我的报OracleCommand初始化错误

我本猿类 | 园豆:2 (初学一级) | 2013-08-06 12:11

@我本猿类: ODP.NET 的特点就是不会用到Oracle的客户端,它自身文件oraociei11.dll 就替代了客户端的功能。如果想使用精简版的客户端,就要使用oraoledb.oracle的方式连接,但要安装 Oracle 数据访问组件。可参考文章:http://www.cnblogs.com/polk6/archive/2013/03/22/2976028.html

方木一 | 园豆:332 (菜鸟二级) | 2013-08-06 14:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册