WebApi Oracle连接问题

昨天在部署WebApi给Android使用时发生一个小插曲:我在本机用VS调试都好使,可偏偏部署到服务器上或者部署到本机上就是不好使。报500服务器内部错误。
排查来排查去,加上Log打印日志终于找到问题所在。
Log捕捉到错误信息:

System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。

后来装了32位的Oracle客户端,还是报错:

数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。

看到这个错误感觉似曾相识,立马将编译平台改成x86,可还是不好使。

这时候我想到InstantClient。
下载链接:下载第一个即可。
http://www.oracle.com/technetwork/cn/topics/winx64soft-101515-zhs.html
下载完解压到某个目录下。然后在环境变量中将这个目录加进去。

还有一点,需要在这个InstantClient这个目录新建两个文件夹和一个tnsname.ora文件。
就像这样


WebApi Oracle连接问题_第1张图片
tns.png

tnsname.ora里配置你服务器的数据库:

ftts =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.254)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TTS)
)
)

别忘了在环境变量里path 里加入路径哦。
path后面添加:

F:\Oracle\instantclient_11_2;F:\Oracle\instantclient_12_1

再新建个系统变量

TNS_ADMIN
F:\Oracle\instantclient_12_1\NETWORK\ADMIN

之后很重要一点:重启电脑 重启电脑 重启电脑
重要的事情说三遍。!!!! IIS在重启电脑后才会重新读取环境变量!!!

现在试试你的webapi连接数据库是不是正常了。

如果还不正常,使用大招:安装OraClient Lite Setup并配置tnsname.ora
百度云分享 (密码:v3w4)

总结:

出现这个原因是因为服务器是x64的,但是Oracle却装了32位的数据库。然后webapi去连接数据库就报错了。。。
InstantClient起到一个桥接作用。
这个方案同样适用于PL/Sql 连接Oracle。


WebApi Oracle连接问题_第2张图片
关注我的公众号.jpg

你可能感兴趣的:(WebApi Oracle连接问题)