Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Azure Web角色连接到Oracle-空错误消息_Oracle_Azure_Azure Web Roles_Odp.net_Oracle12c - Fatal编程技术网

从Azure Web角色连接到Oracle-空错误消息

从Azure Web角色连接到Oracle-空错误消息,oracle,azure,azure-web-roles,odp.net,oracle12c,Oracle,Azure,Azure Web Roles,Odp.net,Oracle12c,我没有尝试移植现有的web应用程序以作为Azure web角色运行。此应用程序使用Oracle DB,我已使用其中一个可用的新映像将其安装在Azure VM上 当我尝试从web应用程序连接到数据库时,问题就出现了。我可以从我的开发者PC(使用ODBC从VisualStudio)连接到数据库,并且可以远程登录到端口,因此没有防火墙问题 我使用的是这种技术:在网上的几个地方都有描述,包括StackOverflow。唯一的区别是我使用Oracle 12而不是11,并使用适当的64位库 我得到的错误不是

我没有尝试移植现有的web应用程序以作为Azure web角色运行。此应用程序使用Oracle DB,我已使用其中一个可用的新映像将其安装在Azure VM上

当我尝试从web应用程序连接到数据库时,问题就出现了。我可以从我的开发者PC(使用ODBC从VisualStudio)连接到数据库,并且可以远程登录到端口,因此没有防火墙问题

我使用的是这种技术:在网上的几个地方都有描述,包括StackOverflow。唯一的区别是我使用Oracle 12而不是11,并使用适当的64位库

我得到的错误不是很具有描述性:

[OracleException (0x80004005)]
   Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck, Int32 isRecoverable) +1199
   Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src) +53
   Oracle.DataAccess.Client.OracleConnection.Open() +4555
   NHibernate.Connection.DriverConnectionProvider.GetConnection() +378
   NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare() +92
   NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect dialect, IConnectionHelper connectionHelper) +154
   NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory sessionFactory) +312
   NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) +1934
   NHibernate.Cfg.Configuration.BuildSessionFactory() +292
   FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() +54

[FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.

]
   FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() +111
   MAP.NHibernateHelper.CreateSessionFactory() in C:\ProjectSVN\FluentWims\DataAccessLayer\DataMapping\NHibernateHelper.vb:102
   MAP.NHibernateHelper.get_SessionFactory() in C:\ProjectSVN\FluentWims\DataAccessLayer\DataMapping\NHibernateHelper.vb:16
(最后删除了一些行,因为其中包含一些我不想公开分享的细节,我很确定它们是无关的)

我已经反编译了托管代码(OracleDataAccess.dll),并将问题追溯到对该包装本机调用的调用:

<DllImport("OraOps12.dll", EntryPoint:="OpsConOpen", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Unicode)> _
Public Shared Function Open(ByRef opsConCtx As IntPtr, ByRef opsErrCtx As IntPtr, ByRef pOpoConValCtx As OpoConValCtx, ByRef pOpoConRefCtx As OpoConRefCtx) As Integer
End Function
_
作为整数打开公共共享函数(ByRef opsConCtx作为IntPtr,ByRef opsErrCtx作为IntPtr,ByRef pOpoConValCtx作为OpoConValCtx,ByRef pOpoConRefCtx作为OpoConRefCtx)
端函数
它返回-1,这不是已知的错误代码,因此创建了这个异常,它几乎没有任何意义(至少对我来说不是,即使在疯狂地搜索之后;)

我已经检查过,如果我删除OraOps12.dll,我会得到一条不同的错误消息,我在ProcMon中看到,该文件实际上是在我放置它的地方找到的。我几乎找不到关于OraOps online的任何信息,以及该方法返回-1的含义

有人知道这里可能发生了什么,可能出了什么问题吗

更新

我曾尝试使用网络监视器查看发送到oracle数据库的内容,但我找不到任何通信—因此似乎调用了OraOps,但它还没有尝试与数据库服务器通信


我使用的连接字符串是从VisualStudio中的工作连接复制/粘贴的,因此我认为它是正确的。即使不是这样,我也希望返回更具描述性的错误消息

为什么坚持使用不受支持的配置?请详细说明。什么是不受支持的?我这样做的原因是Azure Web角色修改环境的权限有限。如果有一个客户端可以安装一个exe或msi(没有聊天用户界面),这将很好地工作,但我还没有发现类似的东西。复制dll和不安装客户端软件肯定是不受支持的。如果您遇到问题,您将自行解决。在使用ODP.NET x64正确安装了ODBC的Oracle 11上,我也遇到了同样的错误。它工作了一段时间,然后突然停止工作一段时间,然后又开始波动工作。很奇怪。