• IIS连接oralce数据库时 提示“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”


    最近由WindowsXP换到了Windows2003系统(Windows 7),Oracle也由原来的8i换到了9i。给客户发布了一个web系统,部署在本机IIS上测试的时候出现了“取不到缓存数据”的自定义异常,经过跟踪找到原因,在连接数据库时,出现“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”异常。

    我的本机环境为(.netframework3.5+ Oracle9i+IIS6+Windows2003)+(.netframework3.5+ Oracle9i+IIS6+Windows7) 。

    最初想到的是IIS里网站设置的问题,于是查看发布网站的应用程序池为默认的DefaultAppPool,于是将其设置为MSSharePointAppPool,测试发现网站可以正常访问,没有上述问题出现。于是查看应有程序池中的两者的属性,发现DefaultAppPool属性——>标识选项卡——>预定义账户为“网络服务”,而MSSharePointAppPool属性——>标识选项卡——>预定义账户为“本地系统”,看来问题是出现在这里了,猜测是某些访问权限上的问题,于是搞了半天终于找到了原因,原来当Oracle 9.2运行在NTFS的分区上时,对于某些非administrator组的用户,ORACLE_HOME 目录是不可见的,而在windows server 2003下asp.net应用使用的帐户是netword service,因此无法创建oracle连接,只要重设一下ORACLE_HOME目录的权限就可以了,但是以前用8.17客户端的时候去没有出现过这种问题。

    解决方法:

    1. 以管理员的用户登录。
    2. 找到ORACLE_HOME文件夹(我的是E:\oracle),点右键,选属性--安全,添加Everyone用户,如果有则设置权限为允许完全控制。
     

    3. 重新IIS(请注意,这一步很重要)。
    4. 浏览网站,一切正常。

  • 相关阅读:
    InstallShield自定义对话框模板代码(转)
    破解汇编知识(转)
    Openrowset数据库远程操作
    SQL类似sleep延时语句
    C#结束线程
    JavaScript中相应ActiveX事件
    Visual C# .NET 命令行编辑器
    AfxBeginThread
    atoi,atol,strtod,strtol,strtoul类型转换(转)
    SQLServer PadLeft,PadRight
  • 原文地址:https://www.cnblogs.com/zhangwei595806165/p/2574167.html
Copyright © 2020-2023  润新知