zoukankan      html  css  js  c++  java
  • 在VS 一切正常,发布到IIS出现问题 [System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本]

       在VS 一切正常,发布到IIS出现问题 [System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本]

       前提条件: 在vs 开发的时候,一切访问都是正常的,然后发布到IIS上,出现了如上的问题,让我纠结了好久!

      在网上找的一些解决办法都没用,什么添加权限啊~给Orcale 文件夹 添加Network Servervice 账户都不行, 而且我的环境也没有安装服务端,只是安装了pl/sql 客户端

      

      再论坛找到一个核心的描述,让我豁然开朗:核心就是 oci.dll

      “错误原因是原来WinXP机子上所安装的OracleInstantClient是32位,所以编译的程序所用的OracleClient也是32位的,从而导致兼容问题。当然,如果在64位操作系统上重新安装64位的Oracle客户端再重新编译程序也是能解决问题的。这里我们介绍一种简单的方法来移植程序。
      实际上,System.Data.OracleClient所指向的是PATH环境变量下的oci.dll。因此,我们只要让程序能够找到64位的oci.dll就可以了。方法如下:
      1. 下载instantclient-basic-win-x86-64-11.1.0.7.0.zip,并解压,如C:instantclient-basic-win-x86-64-11.1。
      2. 在系统的环境变量PATH中加入以上路径。
      之后再运行程序,程序会依照PATH路径寻找oci.dll,如果遇到32位的oci.dll会自动略过,找到64位的oci.dll就能连接上数据库了。”

      

      最后发现我本机的原因:

      由于我只是在用户变量的 Path 里面设置了 oci.dll 的路径,这个只能针对我本用户使用访问,例如在VS中可以使用的,

      当时我在系统的环境变量 Path 中,并没有设置 oci.dll 的路径,所以,当部署在 IIS 上面的时候,IIS应该用的内置账户或者 Network Servervice 账户账户访问数据库,但系统环境变量中找不到 oci.dll 路径,所以报错!

    1. 下图查看的时 本机用户变量中的Path 是配置了 oci.dll 的路径的,所以vs 里面正常使用

    2. 下图是 系统的环境变量Path 没有配置 oci.dll 的路径的,所以部署在IIS 上面不能访问

     环境变量中添加了oci.dll 路径就可以了

  • 相关阅读:
    HDU 6197 array array array nlogn求最长子序列 思维
    HDU 6198 number number number 矩阵快速幂 找规律
    HDU 6195 cable cable cable 思维
    urumuqi 网络赛 H skiing DP
    urumqi 网络赛 E Half-consecutive Numbers 数论
    urumqi 网络赛 C Coconut 水题
    UVA 122 Trees on the level 二叉树 广搜
    POJ3468【线段树lazy操作】
    线段树萌新讲解+一道水题【一点一滴】
    hdoj5792 【树状数组】【未完待续】
  • 原文地址:https://www.cnblogs.com/yougmi/p/8385241.html
Copyright © 2011-2022 走看看