Pregunta

Tengo una aplicación ASP.NET Web Forms que estoy construyendo y ejecutando contra .NET 4.0 en una máquina local Win7. (Todo está bien en el cuadro local). Mi aplicación está ejecutando EF4.1 contra un Oracle DB, por lo que estoy usando el proveedor de datos Oracle EF, que todavía está en beta.

En este momento, puedo implementar con éxito la aplicación en mi máquina de destino del servidor WIN2008 usando la implementación web desde mi VS2010 local, pero cuando ejecuto la aplicación en el objetivo, obtengo el clásico Unable to find the requested .Net Framework Data Provider error.

Aquí está mi (fracasado) Configuración, a partir de ahora:

  • Las aplicaciones de 32 bits son activado en el grupo de aplicaciones (.NET 4.0) en el objetivo del servidor WIN2008.

  • Copiar local se establece en verdadero Para el Oracle.DataAccess DLL en mi solución local VS2010.

  • Ambas cosas del Plataforma y Objetivo de plataforma la configuración se establece en Cualquier CPU En mi configuración de compilación local. (He probado diferentes configuraciones aquí sin éxito).

  • El objetivo del servidor Win2008 lo hace no tienen una Oracle.DataAccess Dll en el GAC. (Pensé que establecer copia local en el Oracle DLL significaría que no necesitaba el GAC).

EDITAR: He tratado de gac el Oracle.DataAccess Dll, pero recibo el mismo error que se discute aquí. (Todavía tengo que investigar esto). Además, ya hay otro cliente de Oracle en mi cuadro de destino, e instalar el cliente Oracle que viene con el proveedor de datos Oracle EF parece interferir con él. No se puede permitir que pase esto.

Pregunta 1: ¿Qué combinación de configuración de configuración de compilación (en el cuadro local) y la configuración de IIS (en el destino) necesito seleccionar para poder ejecutar mi aplicación en el servidor 2008?

Pregunta 2: ¿Cómo puedo hacer que esto funcione sin instalar otro cliente Oracle en mi servidor de destino?

Gracias de nuevo por la ayuda.

Actualización: todo está funcionando. Vea mi respuesta a continuación para obtener un enlace a la solución completa, así como enlaces a información útil.

¿Fue útil?

Solución 2

La solución de GTG proporciona al menos parte de la respuesta a mi pregunta 1, por lo que estoy votando su solución. Para cualquier otra persona interesada en mi pregunta 2 (cómo realizar una instalación ODAC discreta), se puede encontrar una respuesta aquí. (Busque la respuesta de Anthonyvo, ya que encapsula toda la información necesaria).

Debo mencionar que aún no he podido hacer que la solución discreta funcione para mí, pero muchos lo han hecho, y es la solución que necesito implementar.

ACTUALIZAR: Caso cerrado. Me faltaba un Oracle DLL. Se muestra mi configuración completa aquí.

Otros consejos

Dado que su servidor no tiene oracle.dataAccess en el GAC, eso indica que no ha instalado el cliente Oracle en esa máquina e intenta hacer que funcione implementando oracle.dataaccess.dll como parte de su aplicación.

No estoy muy seguro de lo que debe instalarse en el servidor. Por lo general, solo ejecuto la configuración de Oracle en el servidor para asegurarme de que se instalen todos los archivos y configuraciones de Oracle necesarios. Si hace eso, no necesita implementar oracle.dataaccess.dll junto con su aplicación, ya estará en el GAC del servidor.

Una cosa que sí sé es necesaria es una configuración que le indique al sistema cómo crear una nueva instancia del proveedor. Puede intentar agregar esa configuración a su web.config e intentar si eso es suficiente, pero nuevamente, puede haber muchas DLL y configuraciones dependientes que necesita para que el proveedor de Oracle funcione.

La configuración es (esta es para otra versión de ODP.NET, encontrará la configuración correcta en Machine.Config en su propia máquina):

<system.data>
  <DbProviderFactories>
     <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
          description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top