OracleException(0x80004005)连接到Oracle数据库时

我开发了一个简单的C#,。net 4.0网站,我想将其部署到IIS测试服务器上。 我正在使用Oracle.DataAccess程序集连接到Oracle数据库,并且我添加了该DLL(以及许多其他相关DLL的地狱,只是为了好的措施并且在shotfun尝试尝试解决这个问题) ,到我网站的bin文件夹。 它在我的开发机器上工作正常(显然;在复制所有这些DLL之前工作正常),但不是我的测试服务器。 在测试服务器上,我收到以下exception:

[OracleException (0x80004005)] Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) +1468 Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src) +24 Oracle.DataAccess.Client.OracleConnection.Open() +4391 MappingQueries.connect() +173 scripts_list_mappings.Page_Load(Object sender, EventArgs e) +17 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +91 System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207 

没有错误消息,没有具体细节。 有什么方法可以获得更多信息,还是可以解决这个问题? 我在这里有点松散的结局,所以任何有用的信息都会非常感激。

解决方案(有点)

好吧,我已经以迂回的方式解决了这个问题,我想为遇到类似问题的人留下一些建议。

首先要做的事情是:它帮助我建立了一个简单的测试应用程序,我可以用它来确定问题是否是IIS。 我使用了一个连接到Oracle数据库的简单C#应用程序。 我的目标是让它正常工作,我通过安装Oracle即时客户端这样做。

下一步:使用特权帐户运行应用程序。 我使用自己的管理帐户,我已经运行了我的测试应用程序。

最后,为了确定这是否是32/64位问题,我检查了注册表以确定我的Oracle变量的位置:HKLM / Software / Oracle,或HKLM / Software / WOW6432 / Oracle。 我还尝试从命令行运行SQLPLUS,并在Process Manager中检查天气显示为* 32(表示32位应用程序)的过程。

我认为就是这样。 显然,没有“一刀切”,这个问题的解决方案,但希望任何遇到这个问题的人都会在我提供的详细信息中找到一些帮助,以及下面的有用评论。

虽然您没有收到特定的错误消息,但很可能与测试服务器上本地安装的ODP.Net(版本号,32位与64位DLL)不兼容。

这个答案有几个选项可能会有所帮助。