我有一个使用Vb.net9在Vista上开发的网站。它与Oracle建立了连接。对于连接,我使用System.Data.OracleClient。它在我的机器和我们的测试服务器上工作正常,但它在生产服务器上不起作用。我们在服务器上安装了Oracle Client 11。错误是System.Data.OracleClient需要Oracle客户端软件版本8.1.7
我们已经尝试过,制作一个打开连接的控制台应用程序,连接运行正常,打开,显示一条消息,一切都很顺利。
然后我们制作一个简单的Web表单,将其放在程序目录中,只需一个按钮,打开连接,try..catch,抓取错误,同样的错误。
控制台应用程序在iwam下运行的管理员网站下运行。 iwam有可能有不同的路径吗?
答案 0 :(得分:56)
我遇到过这个错误几十次:
原因
在使用NTFS的Windows上安装Oracle客户端时,未正确设置安全权限。结果是ORACLE_HOME目录的内容对机器上的Authenticated Users不可见;当System.Data.OracleClient使用经过身份验证的用户权限从ASP.NET与Oracle Connectivity软件进行通信时,这会导致错误。
解决方案
要解决此问题,您必须将Authenticated Users组权限授予Oracle主目录。
再次尝试使用您的应用程序。
答案 1 :(得分:4)
此帖子的作者(现已删除的帖子)建议检查您的C:\Windows\System32
文件夹,以确保oci.dll
存在。从Oracle主目录复制文件为我解决了这个问题。
答案 2 :(得分:2)
更新1:不同用户可能有不同的路径。但这不是可能的问题。用户iwam用户没有权利访问oracle客户端目录。
更新0:它假设有效。检查环境变量(找到oracle客户端和tnsnames.ora需要)。此外,也许你有32/64位问题。另外,请考虑使用Oracle Data Provider for .NET(搜索odp.net)
答案 3 :(得分:1)
Oracle客户端版本11无法连接到8i数据库。您最多需要一个版本10的客户端。
答案 4 :(得分:0)
当我们第一次使用Oracle 10g迁移到Vista时,我们在Vista盒子上安装Oracle客户端时遇到了这个问题,即使我们在安装过程中使用管理员权限运行也是如此。
Oracle推出了与Vista兼容的新版10g客户端(10.2.0.3)。
我确实认为这是在11g发布之后,因此有可能还有11g的“Vista兼容”版本。
答案 5 :(得分:0)
为什么不使用它:dotConnect for Oracle(以前称为OraDirect .NET)?
可以将其配置为根本不需要Oracle客户端。
我们一直在Windows服务和ASP.NET Web服务中使用它,它就像一个魅力。
答案 6 :(得分:0)
对我来说,问题是我的Visual Studio中的一些插件开始强制我的应用程序进入x64 64位模式,因此我找不到Oracle驱动程序,因为我安装了Oracle 32位。
因此,如果您遇到此问题,请尝试在safemode(devenv / safemode)中运行Visual Studio。 我可以通过使用SysInternals / Microsoft的ProcMon应用程序找到它在SYSWOW64中查找ic.dll文件。
更新:对我来说,导致问题的是Telerik JustTrace产品,它可能会以某种方式挂钩并影响运行时版本进行跟踪。
Update2:不仅JustTrace导致问题,JustMock导致相同的处理器模式问题。 JustMock更容易修复:点击JustMock->禁用Profiler,然后我的Web应用程序的oracle驱动程序以正确的CPU模式运行。这可能是Telerik将来修复的。