asp.net-mvc-3 deployment oracle10g entity-framework-4.3

asp.net mvc 3 - No se puede implementar el proyecto MVC 3 con Entity Framework 4.3.1 y Oracle ODAC



asp.net-mvc-3 deployment (1)

Actualmente estoy intentando implementar una aplicación MVC 3 en la que he estado trabajando para nuestro servidor web de prueba, y me estoy enfrentando a un gran problema al cargar todo correctamente. Para tratar de dar tanta información como sea posible, estoy haciendo una implementación 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 Entity Framework, uno va a una base de datos SQL Server y el otro va a una base de datos Oracle 10g. Creo que el problema es con el objeto de Entity Framework yendo a la base de datos de Oracle. Este es mi primer proyecto MVC 3 y mi primer despliegue (aquí hay muchas variables "nuevas"), por lo que no estoy seguro de si me falta algo o no. ¿Cómo soluciono este problema? Todo funciona perfectamente bien en mi máquina local, solo cuando despliegue el proyecto en el servidor, tengo problemas.

Cosas que he intentado hasta ahora:

Todos mis controladores heredan de un controlador base (BaseController), donde viven las instancias de los objetos del marco de 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 al volver a BaseController, vuelvo a generar los errores en el seguimiento de la pila. El error parece ocurrir en la línea donde declaro que mi objeto de estructura de entidad va a la base de datos de Oracle:

protected internal RadixWebDataPRDX dbRadixData = new RadixWebDataPRDX();

Tengo Oracle.DataAccess.dll copiado, y esto todavía causa un problema.

Mi rastro de pila para este error está debajo, gracias:

Error de servidor en la aplicación ''/ RadixMVC''.

No se puede encontrar el Proveedor de datos de .Net Framework solicitado. No puede ser 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. No puede ser 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 utilizando el seguimiento de pila de excepción a continuación.

Stack Trace:

[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 ASP.NET: 4.0.30319.272


La solución a esto fue lo que dijo Bob. Los componentes ODAC también se tenían que instalar en el servidor (algo que no sabía). Gracias Bob!