我开发了一个简单的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,并在Process Manager中检查天气显示为*32(表示32位应用程序)的过程.
我认为就是这样.显然,没有"一刀切",这个问题的解决方案,但希望任何遇到这个问题的人都会在我提供的细节中找到一些帮助,以及下面的有用评论.
虽然您没有收到特定的错误消息,但很可能与测试服务器上本地安装的ODP.Net(版本号,32位与64位DLL)不兼容.
这个答案有几个选项可能会有所帮助.