He seguido las instrucciones aquí: http://splinter.com.au/blog/?p=156 en un intento de utilizar una versión más reciente de ODP.NET sin instalar el cliente Oracle 11g. Seguí todo, hasta ahora, excepto reiniciar IIS.Oracle oci.dll en el directorio bin de ASP.NET no se puede eliminar/no funciona
Sin embargo, esto ha causado algunos problemas y tengo mucha curiosidad por saber por qué. Si trato de usar ODP.NET me encuentro con una excepción en blanco lanzada cuando la conexión de Oracle intenta conectarse (ConnectExample.Open() por ejemplo).
Pero lo más curioso es que no puedo eliminar oci.dll. Dice que está en uso. ¿Qué podría estar usando este dll? ¿Qué hace exactamente ASP.NET con un dll nativo cuando está dentro del directorio Bin? Pensé que tal vez esto es algo relacionado con el oci.dll, pero si utilizo el dll de manera similar en una aplicación WinForm de escritorio, el oci.dll no se bloquea y puedo eliminarlo libremente.
Además, después de que intenté usarlo, System.Data.OracleClient dejó de funcionar. Ahora arroja una excepción que OCIEnvCreate devuelve con -1.
Intentaré reiniciar IIS, y con suerte eso solucionará esto, pero me gustaría saber qué está sucediendo aquí (y si se puede resolver sin reiniciar IIS). ¿Alguien tiene alguna idea?
Edición: He intentado reiniciar IIS y que no fijó una cosa
Edición # 2: No creo que he formulado esta pregunta muy bien, pero eso fue debido a mi asumiendo reiniciar IIS funcionaría. Ahora solo necesito saber por qué no está funcionando. En Google buscando problemas similares, solo he encontrado 2 publicaciones en el foro que me informaron sobre mi problema exacto: Oracle ODP.NET devolvió una excepción en blanco al intentar conectarse. Aquí están los enlaces a los que:
http://kr.forums.oracle.com/forums/thread.jspa?threadID=632296
http://forums.oracle.com/forums/thread.jspa?threadID=549864
El enlace coreana anterior es la más interesante. Tienen una instalación completa que me lleva a sospechar que mi problema no es con los archivos o los archivos que faltan. Me pregunto qué quieren decir con "servidores de producción lanzando excepciones en blanco si se realiza una llamada a la DLL OCI antes de que se pueda establecer ODP".
Edición/Actualización n. ° 3: Tenemos un servidor de intranet aquí para nuestro departamento que pude probar hoy. Agregué los dll necesarios a la carpeta Bin y todo funcionó sin la necesidad de reiniciar IIS. No pregunto. Intentaré probar un poco más en este servidor para ver si puedo replicar el problema
Editar # 4 (la odisea continúa): determiné que oraocci11.dll (la DLL de la interfaz de llamada de C++) es necesaria inicialmente por ASP. NET (o la biblioteca ODP.NET) incluso para encontrar los dll del cliente 11g, después de eso oraocci11.dll parece que nunca se volverá a utilizar y se puede eliminar. No estoy seguro de lo que eso significa para mi problema, pero dado que se agrega a la base de conocimientos aquí, calculé que lo mencionaría
Edición n. ° 5: Agregué mfc71.dll y msvcr71.dll, 2 archivos de sistemas de Windows relacionados con C/MFC, al directorio Bin cuando descubrí que ODP.NET los necesita (o al menos, los necesita el cliente). Esto, al menos, hizo que las cosas se mantuvieran en el viejo error familiar de "Cliente no compatible". Eliminé esas 2 DLL y, efectivamente, volví a los mismos errores indicados anteriormente. Sin embargo, agregarlos no hizo que esos errores desaparecieran, así que tendré que reiniciar IIS nuevamente.
ASP.NET cargará el Dll cuando se invoca por PIn en alguna parte, el Dll se mantendrá cargado hasta que el proceso ASP.NET se haya reciclado/reiniciado. –