我按照这里的指示:
http://splinter.com.au/blog/?p=156尝试使用较新版本的ODP.NET而不安装Oracle 11g客户端.到目前为止,除了重启IIS之外,我都遵循了一切.
然而,这引起了一些问题,我真的很好奇为什么.如果我尝试使用ODP.NET,我遇到了Oracle连接尝试连接时抛出的空白异常(例如ConnectExample.Open()).
但最奇怪的是:我无法删除oci.dll.它说它正在使用中.什么可以使用这个DLL? ASP.NET在Bin目录中使用本机dll时究竟做了什么?我想也许这是涉及oci.dll的东西,但如果我在桌面WinForm应用程序中以类似的方式使用dll,那么oci.dll不会被锁定,我可以自由删除它.
此外,我尝试使用它后,正常的System.Data.OracleClient停止工作.它现在抛出OCIEnvCreate以-1返回的异常.
我将尝试重新启动IIS,并希望这将解决此问题,但我想知道这里发生了什么(如果它可以在不重新启动IIS的情况下解决).有没有人有想法?
编辑:我尝试重新启动IIS,但没有解决问题
编辑#2:我认为我没有很好地提出这个问题,但那是因为我假设重新启动IIS会起作用.现在我只需要知道它为什么不起作用.在谷歌搜索类似的问题我只遇到2个论坛帖子,告诉我确切的问题:Oracle ODP.NET在尝试连接时返回一个空白异常.这是以下链接:
上面的韩文链接是最有趣的.他们有一个完整的安装,让我怀疑我的问题不是文件或丢失的文件.我想知道他们的意思是“生产服务器抛出空白异常如果在建立ODP之前调用OCI DLL”?
编辑/更新#3:我们的部门有一个内部网服务器,我今天可以测试.我将所需的dll添加到Bin文件夹中,一切正常,无需重新启动IIS.我不问.我将在此服务器上尝试更多测试,看看我是否可以复制问题
编辑#4(奥德赛继续):我确定oraocci11.dll(C调用接口DLL)最初需要ASP.NET(或ODP.NET库)才能找到11g客户端dll,之后就是oraocci11.dll似乎永远不会再次使用,可以删除.不确定这对我的问题意味着什么,但由于它增加了知识库,我想我会提到它
编辑#5:我将mfc71.dll和msvcr71.dll,2个处理C / MFC的Windows系统文件添加到Bin目录,因为我发现它们是ODP.NET所需要的(或者至少是客户端需要的).这至少使得旧的熟悉的“客户端不兼容”错误.我删除了这两个DLL,确定它回到了上面给出的相同错误.然而,添加它们不会使这些错误消失,所以我将不得不重新重置IIS.