C# 连接到Oracle数据库时出现OracleException(0x80004005)

C# 连接到Oracle数据库时出现OracleException(0x80004005),c#,asp.net,oracle,iis,C#,Asp.net,Oracle,Iis,我开发了一个简单的C#,.NET4.0网站,我想将其部署到IIS测试服务器上。我正在使用Oracle.DataAccess程序集连接到一个Oracle数据库,并且我已经将该DLL(以及大量其他相关DLL,只是为了更好地测量并尝试解决此问题)添加到我网站的bin文件夹中。它在我的开发机器上运行良好(显然,在复制所有这些DLL之前运行良好),但在我的测试服务器上运行不好。在测试服务器上,我收到以下异常: [OracleException (0x80004005)] Oracle.DataAcc

我开发了一个简单的C#,.NET4.0网站,我想将其部署到IIS测试服务器上。我正在使用Oracle.DataAccess程序集连接到一个Oracle数据库,并且我已经将该DLL(以及大量其他相关DLL,只是为了更好地测量并尝试解决此问题)添加到我网站的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。我使用了一个简单的C#应用程序连接到我的Oracle数据库。我的目标是让它正常工作,为此我安装了Oracle即时客户端

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

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


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

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


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

您的IIS用户是否具有执行Oracle的正确权限client@SystemDown等一下,让我试试。内存很模糊(已经有好几年没有使用Oracle了),但是您需要找到Oracle客户端所在的文件夹,并检查那里的用户权限。您的IIS用户(取决于您的操作系统)需要有权限。虽然System.Data.OracleClient已被弃用,但如果这是一个小型的非关键应用程序,我强烈建议使用它,而不是Oracle.DataAccess。它更易于启动和运行。我从经验中得出结论,我的目的是为您省去很多挫折。我对Microsoft弃用它感到失望。请尝试一下,然后再试一次我明白我的意思了。ODP.NET不需要设置。谢谢各位,我正在调查权限,但这似乎不是问题。我正在使用自己的帐户(完全管理员权限)运行应用程序,我仍然有同样的问题。我发现我的服务器是32位的,而我的工作站是64位的:我需要确定我是使用64位Oracle客户端还是32位Oracle客户端。我想你可能有问题。我有另一个应用程序使用Oracle客户端。我尝试在服务器上运行,但它崩溃了。因此,我安装了我重新调试了Oracle客户端并再次运行了它,它成功了。因此,我将使用它作为我的试金石测试,并尝试确定两者之间的区别。我非常感谢您——从根本上说,这就是答案。我的项目似乎有点失败,但您引导我找到了答案。谢谢!