Error conectando un Servicio Web a Oracle en un entorno de 64 bits
En esta ocasión me gustaría comentar un problema que hemos tenido mis compañeros de trabajo y yo en un proyecto muy concreto, y como lo hemos resuelto por si le pudiera servir a más gente.
Hemos desarrollado un proyecto de un Servicio Web que accede al proveedor de acceso a datos de Oracle para .NET (ODP.NET para más señas).
Las pruebas que realizamos «sin servicio» siempre habían funcionado, así que ahora que los requisitos nos obligaba a desarrollar un Servicio Web, no podía dejarnos en mal lugar… o eso creímos.
El caso es que a la hora de acceder a Oracle con en mencionado Servicio Web obteníamos el siguiente error:
«No se encuentra el proveedor de datos .NET Framework solicitado. Puede que no esté instalado.»
Extrañados, empezamos a analizar el porqué, y llegamos a la conclusión de que era un problema de librerías.
Las librerías de Oracle están desarrolladas en 32 bits, y nuestro desarrollo era de 64 bits.
No obstante, el problema no se resuelve con cambiar la compilación de nuestro Servicio Web a 32 bits, ni mucho menos. De hecho, ese NO es el problema, sino el IIS.
El entorno de pruebas era de 64 bits. Desde este punto de vista, diríamos que nos vamos acercando más aún al problema real.
De hecho, si miramos con más detenimiento el IIS 7.x de 64 bits, observaremos una «pecualiar» opción que hace que la ejecución de determinadas librerías y aplicaciones de 32 bits no funcionen correctamente tal y como inicialmente creeríamos.
Para ello, ejecutaremos el administrador IIS (ejecutaremos el comando inetmgr).
Una vez dentro del administrador de IIS tendremos que acceder al pool de aplicaciones (grupo de aplicaciones), hacer clic con el botón derecho del ratón, y seleccionar la opción de Configuración avanzada.
Aparecerá una ventana como esta:
En esta ventana, tendremos que seleccionar la opción «Habilitar aplicaciones de 32 bits» a True.
Adicionalmente, también tendremos que prestar atención a la opción Versión de .NET Framework para indicar la versión correcta de .NET que queremos utilizar en el pool.
Espero que esto ayude a más de una persona a resolver un problema como este y perder excesivo tiempo en una tarea que debería costarnos 30 segundos.
Un saludo y feliz verano a todo el mundo.
2 Responsesso far
Excelente ar´ticulo. Nosotros aún tenemos todo el ambiente en 32 bits y no hemos tenido ningún problema, pero´ahora vamos a tener pendiente este detalle cuando nos pasemos a un ambiente de 64 bits, indudablamente nos vamos a ahorrar gran cantidad tiempo
Muchas gracias por el Tip.
A propósito, una consulta más.¿han tenido ya la oportunidad del probar el nuevo ODP.NET que incluye soporte para Entity FrameWork ?. Nosotros estamos muy cercanos a utilizarlo, ya que actualmente sólo trabajamos con puros typed dataset, así que cualquier comentario, sugerencia o recomendación es bienvenida.
Saludos.