我有一个在 Windows 环境中运行的 asp.net / C# Web 应用程序。
该项目构建良好,并在我本地计算机的 VB.net 开发服务器上完美运行。
但是,当我发布到真实应用程序服务器时,我收到以下错误消息:
[OracleException (0x80004005): 提供程序与 Oracle 客户端版本不兼容]
[TypeInitializationException:“Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常。]
该应用程序的一个版本当前已启动并运行得很好,我正在不同目录中的实时服务器上进行测试。我什至尝试从工作应用程序中获取 Oracle.DataAccess .dll,但仍然收到相同的错误消息。
首先:Oracle 客户端/提供商一团糟。这对于 MS 版本(无论如何都会贬值)和 Oracle 版本都适用。
为了通过 ODP.NET 提供程序连接到 Oracle DB,需要正确设置三件事:
- Oracle客户端需要正确设置(与.NET提供程序无关,这指的是安装的oracle客户端通常位于c:\oracle)
- ODP.NET提供程序需要与安装的Oracle客户端兼容
- 客户端和提供商的架构以及您的应用程序需要匹配,您不能将 64 位客户端与 x86 提供商/应用程序一起使用,反之亦然
通常最好的方法是同时拥有两者的最新版本。但如果您想一劳永逸地解决此问题,请使用第三方 Oracle .NET 提供商。
UPDATE
更好的之一来自 DataDirect(无隶属关系):
http://www.datadirect.com/products/net/net-for-oracle/index.html
它不仅仅是安装(无需 Oracle 客户端),而且速度更快、完全托管、x64 和一般支持比 ODP.NET 更好。但这会让你付出代价。
DevArt 也相当不错(而且便宜得多):
http://www.devart.com/dotconnect/oracle/
出于可扩展性原因,我们决定使用 DataDirect,但这应该与您无关。
在这里,您可以找到构建 .NET 提供程序的第三方的良好汇编,但不限于 Oracle:
http://msdn.microsoft.com/en-us/data/dd363565
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)