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

Posted Nemo_XP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常相关的知识,希望对你有一定的参考价值。

项目中WCFsConsoleHost服务宿主报"Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常"错误,如图
在这里插入图片描述
在这里插入图片描述

发现同事的电脑上正常运行无问题,详细对比一下区别后,才发现我的电脑设置服务生成路径为bin下会报此问题,而设置服务生成到服务专用目录并无此问题。逐步对比文件才发现bin和服务专用目录缺少OraOps11w.dll文件。
得出结论:
1.服务宿主项目或服务业务层项目引用Oracle.DataAccess的32位或者64位是否与项目版本一致。不一致会报: 未能加载文件或程序集“Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。试图加载格式不正确的程序。 一般,我们如果引用的dll版本没有问题,这个服务宿主项目改成对应Any Cpu或者对应正确版本即可。不报此错,1结论跳过。
在这里插入图片描述
2.查看引用此dll文件的路径文件夹,查看里面是否有Oracle.DataAccess.dll(引用的文件),OraOps11w.dll(Oracle.DataAccess.dll的依赖文件,必须有,缺少就会报类型初始值设定项引发异常错误。)
PS:目前我遇到的情况是只依赖了这个dll,可能每个人遇到的问题不一样,最好是把下载所有的相关依赖文件和Oracle.DataAccess.dll都放在同一目录里。另外如果缺少文件,网上下载时候注意oracle版本号和版本位数x86还是x64都要和自己之前的文件还有项目保持一致。

在这里插入图片描述
3.声明一下,这和你本地有没有装客户端版本和服务端版本无半毛钱关系。

以上是关于Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常的主要内容,如果未能解决你的问题,请参考以下文章

Oracle.DataAccess.Client.OracleConnection.Open()报错System. NullReferenceException

无法将“System.String”类型的对象转换为 C# 中的“Oracle.DataAccess.Client.OracleParameter”类型

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

错误 47 存储区提供程序工厂类型“Oracle.DataAccess.Client.OracleClientFactory”未实现 IServiceProvi

Oracle.DataAccess.Client.OracleException ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小。 ExecuteReader 步骤出错

用iis发布应用连接oracle,系统报Oracle.DataAccess.Client.OracleConnection的类型初始值设定项引发异常