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

时间:2013-12-17 23:28:46

标签: c# asp.net oracle iis

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

[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,并在流程管理器中检查天气显示为* 32(表示32位应用程序)。

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

1 个答案:

答案 0 :(得分:5)

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

This answer有几个选项可能会有所帮助。