sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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.后来又碰到过一次这样的问题, 发现我跟目录里以上文件都齐全, 可还是报错了, 迷糊了一会儿, 最后才发现 ,我调试时候启动的服务的bin文件夹里的文件并不齐全, 所以要么根目录这些文件覆盖到bin里(比较麻烦,有可能重新生成又给删少了), 要么把服务启动设置为"启动外部程序" ,地址为最齐全的根目录(前提宿主文件在根目录也能独立启动).

在这里插入图片描述

4.声明一下,这和你本地有没有装客户端版本和服务端版本无半毛钱关系。

https://blog.csdn.net/spw55381155/article/details/116982830
posted on 2022-08-16 22:00  sunny123456  阅读(282)  评论(0编辑  收藏  举报