在这里花了好几天阅读线程并解决关于我的开发机器和生产之间的ODP.Net错误的大量消息后,我想在这里由专家负责,以确保a)我的假设是正确的,并且b)将来没有更好的解决方法。
我的基本要点是,我应该始终通过查看我的终极目标服务器的GAC来确定Oracle.DataAccessClient.dll的版本。然后我应该确保我作为VS中的引用添加的DLL版本与最终目标计算机上的相匹配。我不完全确定为什么我需要匹配GAC中的内容,因为我正在将dll复制到bin目录,但这不是我的问题。
那么当您的开发,登台/测试和生产环境没有完全保存的DLL版本时会发生什么?基于一些线程Deploying and Configuring ODP,似乎我可以将即时客户端文件直接复制到我的应用程序bin目录中,而不用担心任何机器上已经存在的内容。这是对的吗?
还有其他想法或建议吗?谢谢。
答案 0 :(得分:0)
最终解决 - 解决方案是使用Oracle托管驱动程序而不是非托管驱动程序。此链接非常有助于解释优势以及引用的视频,逐步显示如何从非托管更改为托管。 Oracle ODP.net Managed vs Unmanaged Driver
我还必须使用无tnsnames的配置(复制tnsnames.ora并不像我在视频中所描述的那样为我工作)。即我使用Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));User Id=oracle_user;Password=oracle_pwd;" as part of my connection string. I've tested on three different systems so far and all seem to work
很棒。为了便于管理,我只需从app / web.config文件中提取参数并填充上面的字符串。