No se puede implementar el proyecto MVC 3 con Entity Framework 4.3.1 y Oracle ODAC
Actualmente estoy intentando implementar una aplicación MVC 3 en la que he estado trabajando en nuestro servidor web de prueba y tengo un problema importante al cargar todo correctamente. Para intentar y dar la mayor cantidad de información posible sobre esto, estoy haciendo un despliegue de bin (he enviado todas las referencias para copiar localmente), y estoy haciendo una publicación básica en el proyecto web a través del sistema de archivos en el directorio de la aplicación en el servidor. Los componentes que estoy usando son:
Entity Framework 4.3.1 Oracle ODAC 11.2.0 (versión 4.112.3.0)
Esta aplicación tiene 2 objetos de Entity Framework, uno que va a una base de datos de SQL Server y el otro que va a una base de datos Oracle 10g. Creo que el problema es que el objeto Entity Framework va a la base de datos Oracle. Este es mi primer proyecto de MVC 3 y mi primer despliegue (aquí hay muchas "nuevas" variables), así que no estoy seguro de si me estoy perdiendo algo o no. ¿Cómo soluciono este problema? Todo funciona perfectamente bien en mi máquina local, solo cuando implemento el proyecto en el servidor, tengo problemas.
Cosas que he probado hasta ahora:
Todos mis controladores heredan de un controlador base (BaseController), donde viven las instancias de los objetos del marco de la entidad. No puedo acceder a la vista de índice de ningún controlador que herede de BaseController, pero HomeController hereda de Controller. Esta página funciona correctamente. He intentado heredar de Controller en los demás, y eso me permite acceder a la vista de índice, pero volver a BaseController provoca los errores en el seguimiento de la pila nuevamente. El error parece ocurrir en la línea donde estoy declarando que mi objeto de marco de entidad va a la base de datos de Oracle:
protected internal RadixWebDataPRDX dbRadixData = new RadixWebDataPRDX();
Tengo el archivo Oracle.DataAccess.dll que se está copiando, y esto todavía causa un problema.
El seguimiento de mi pila para este error está abajo, gracias:
Error del servidor en la aplicación '/ RadixMVC'.
No se puede encontrar el proveedor de datos de .Net Framework solicitado. Puede que no esté instalado.
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.ArgumentException: no se puede encontrar el proveedor de datos de .Net Framework solicitado. Puede que no esté instalado.
Error de fuente:
Se generó una excepción no controlada durante la ejecución de la solicitud web actual. La información sobre el origen y la ubicación de la excepción se puede identificar mediante el seguimiento de la pila de excepciones a continuación.
Traza de la pila:
[ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.]
System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +1420503
System.Data.EntityClient.EntityConnection.GetFactory(String providerString) +34
[ArgumentException: The specified store provider cannot be found in the configuration, or is not valid.]
System.Data.EntityClient.EntityConnection.GetFactory(String providerString) +63
System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString) +483
System.Data.EntityClient.EntityConnection..ctor(String connectionString) +77
System.Data.Objects.ObjectContext.CreateEntityConnection(String connectionString) +40
System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName) +17
RadixMVC.Models.Data.RadixWebDataPRDX..ctor() in C:\Users\862599\Documents\Visual Studio 2010\Projects\RadixMVC\RadixMVC\RadixMVC.Models.Data\RadixDataPRDX.Designer.cs:34
RadixMVC.Controllers.BaseController..ctor() in C:\Users\862599\Documents\Visual Studio 2010\Projects\RadixMVC\RadixMVC\RadixMVC\Controllers\BaseController.cs:17
RadixMVC.Controllers.AccountsPayableController..ctor() +29
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) +98
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +241
System.Activator.CreateInstance(Type type, Boolean nonPublic) +69
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +67
[InvalidOperationException: An error occurred when trying to create a controller of type 'RadixMVC.Controllers.AccountsPayableController'. Make sure that the controller has a parameterless public constructor.]
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +181
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +77
System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +66
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +209
System.Web.Mvc.<>c__DisplayClass6.<BeginProcessRequest>b__2() +50
System.Web.Mvc.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a() +13
System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +23
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 func) +124
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +98
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8970356
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184
Información de la versión: Microsoft .NET Framework Version: 4.0.30319; Versión de ASP.NET: 4.0.30319.272