OracleException (0 x 80004005) Cuando se Conecta a la Base de datos de Oracle

He desarrollado un sencillo C#, .net 4.0 página web que me gustaría implementar en un IIS servidor de prueba. Yo estoy usando el de Oracle.DataAccess asamblea para conectarse a una base de datos de Oracle, y he añadido que DLL (y un infierno de un montón de otros relacionados con el archivo DLL, para la buena medida y en un shotfun intento de tratar y resolver este problema), a la carpeta bin de mi sitio web. funciona bien en mi máquina de desarrollo (obviamente; funcionaba bien antes de copiar todos los archivos Dll), pero no en mi servidor de prueba. En el servidor de prueba, recibo el siguiente excepción:

[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

Ningún mensaje de error, no hay detalles específicos. ¿Hay alguna manera de obtener más información, o puede haber alguna solución a este problema? Estoy en un poco de un extremo suelto aquí, así que cualquier información útil sería muy apreciada.

La Solución (una especie de)

Bien, me he fijado en una rotonda, y me gustaría dejar un par de sugerencias para quien se enfrenta a un problema similar.

Lo primero es lo primero: esto me ayudó a tener una prueba sencilla aplicación que podría utilizar para determinar si el problema era de IIS. He utilizado una simple aplicación de C# que se ha conectado a mi base de datos de Oracle. Mi objetivo era conseguir que funcione correctamente, que me lo hizo mediante la instalación de Oracle instant client.

Siguiente paso: ejecutar la aplicación con una cuenta con privilegios. He utilizado mi propia cuenta administrativa, que se me había ejecutar mi aplicación de prueba con.

Finalmente, para determinar si se trataba de un 32/64 bits problema, he comprobado el registro para determinar donde mi Oráculo variables fueron: HKLM/Software/Oracle, o HKLM/Software/WOW6432/Oracle. También traté de correr SQLPLUS desde la línea de comandos, y comprobar el tiempo del proceso aparece como *32 (para indicar una aplicación de 32 bits), en el Administrador de Procesos.

Creo que de eso se trata. Está claro que no hay » una talla para todos, la solución a este problema, pero esperemos que alguien que viene a través de esta pregunta se encuentran algunos de asistencia en los detalles, me ha proporcionado, y los útiles comentarios de abajo.

  • ¿Tu IIS usuario tiene los permisos correctos para ejecutar el cliente de Oracle
  • Espera, déjame intentar algo.
  • Recuerdo es vago (no ha trabajado con Oracle desde hace bastantes años), pero hay que encontrar la carpeta donde el cliente de Oracle existe y comprobar los permisos de usuario no. Su usuario de IIS (depende de tu sistema operativo) necesita tener permisos.
  • Aunque El Sistema.De datos.OracleClient está en desuso, recomiendo altamente que más de Oracle.DataAccess si esta es una pequeña ong de aplicaciones críticas. Es mucho más fácil para ponerse en marcha. Hablo desde la experiencia y con la intención si ahorra una gran frustración. Estoy decepcionado de Microsoft es obsoleto. Pruébelo y usted verá lo que quiero decir. ODP.NET no es bueno para configurar.
  • Gracias Chicos, estoy investigando a los permisos, pero que no parece ser el problema. Estoy ejecutando la aplicación con mi propia cuenta (plenos derechos de administrador), y sigo teniendo el mismo problema. He descubierto que mi servidor es de 32 bits, mientras que mi estación de trabajo es de 64 bits: necesito determinar el tiempo que yo tengo una de 64 bits del cliente de Oracle o de 32 bits del cliente de Oracle.
  • También, comprobar su ORACLE_HOME variable y asegúrese de que se apunta a la ruta correcta. El error específico que usted está consiguiendo que parece ser una de 64 bits/32 bits problema de compatibilidad. forums.oracle.com/thread/615607
  • Yo tenía el mismo problema. Yo estaba corriendo en IIS. He tratado de ejecutar con F5 IIS Express y funcionó. Así que definitivamente fue permisos de IIS.
  • Reiniciar el PC solucionado el problema.

InformationsquelleAutor Liam M | 2013-12-17

1 Kommentar

  1. 5

    Mientras no recibe un mensaje de error específico, hay una buena probabilidad de que hay una incompatibilidad con ODP.Net (los números de versión de 32 bits vs 64 bits Dll) instalado localmente contra en el servidor de prueba.

    Esta respuesta tiene varias opciones que pueden ayudar.

    • Creo que podría ser en algo. Yo tenía otra aplicación que utiliza el cliente de Oracle. He intentado que se ejecuta en el servidor y se estrelló. Así que, he instalado el cliente de Oracle y corrió una vez más, y funcionó. Así que, voy a usar eso como mi prueba de fuego, y tratan de determinar la diferencia.
    • No puedo agradecerles lo suficiente – esta fue la respuesta, fundamentalmente. Mi proyecto parece ser un poco roto, pero me llevó a la respuesta. Gracias!

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea