MVC 3-Projekt kann nicht mit Entity Framework 4.3.1 und Oracle ODAC bereitgestellt werden

Ich versuche derzeit, eine MVC 3-Anwendung, an der ich gearbeitet habe, auf unserem Test-Webserver bereitzustellen, und stoße auf ein schwerwiegendes Problem beim korrekten Laden. Um zu versuchen, so viele Informationen wie möglich zur Verfügung zu stellen, stelle ich eine Bin-Bereitstellung (ich habe alle Verweise zum lokalen Kopieren gesendet) und mache eine grundlegende Veröffentlichung im Webprojekt über das Dateisystem in das Anwendungsverzeichnis auf der Server. Die Komponenten, die ich verwende, sind:

Entity Framework 4.3.1 Oracle ODAC 11.2.0 (Version 4.112.3.0)

Diese Anwendung verfügt über 2 Entity Framework-Objekte, von denen eines zu einer SQL Server-Datenbank und das andere zu einer Oracle 10g-Datenbank führt. Ich glaube, das Problem liegt darin, dass das Entity Framework-Objekt in die Oracle-Datenbank wechselt. Dies ist mein erstes MVC 3-Projekt und meine erste Bereitstellung (es gibt hier viele "neue" Variablen), daher bin ich mir nicht sicher, ob mir etwas fehlt oder nicht. Wie behebe ich dieses Problem? Auf meinem lokalen Computer funktioniert alles einwandfrei. Nur wenn ich das Projekt auf dem Server bereitstelle, treten Probleme auf.

Dinge, die ich bisher versucht habe:

Alle meine Controller erben von einem Basiscontroller (BaseController), auf dem sich die Instanzen der Entity Framework-Objekte befinden. Ich kann nicht zur Indexansicht eines Controllers gelangen, der vom BaseController erbt, aber der HomeController erbt vom Controller. Diese Seite funktioniert korrekt. Ich habe versucht, von Controller in den anderen zu erben, und das ermöglicht mir, zur Indexansicht zu gelangen, aber das Zurückkehren zu BaseController verursacht die Fehler in der Stapelablaufverfolgung erneut. Der Fehler tritt anscheinend in der Zeile auf, in der ich mein Entity Framework-Objekt deklariere, das zur Oracle-Datenbank wechselt:

protected internal RadixWebDataPRDX dbRadixData = new RadixWebDataPRDX();

Ich habe die Oracle.DataAccess.dll kopiert, und dies verursacht immer noch ein Problem.

Mein Stack-Trace für diesen Fehler ist unten, danke:

Serverfehler in der Anwendung '/ RadixMVC'.

Der angeforderte .NET Framework-Datenanbieter konnte nicht gefunden werden. Möglicherweise ist es nicht installiert.

Beschreibung: Während der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Überprüfen Sie die Stapelablaufverfolgung, um weitere Informationen zu dem Fehler und dessen Ursprung im Code zu erhalten.

Ausnahmedetails: System.ArgumentException: Der angeforderte .NET Framework-Datenanbieter konnte nicht gefunden werden. Möglicherweise ist es nicht installiert.

Quellfehler:

Während der Ausführung der aktuellen Webanforderung wurde eine nicht behandelte Ausnahme generiert. Informationen zu Ursprung und Position der Ausnahme können mithilfe des folgenden Ausnahmestapel-Trace ermittelt werden.

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

Versionsinformationen: Microsoft .NET Framework Version: 4.0.30319; ASP.NET Version: 4.0.30319.272

Antworten auf die Frage(1)

Ihre Antwort auf die Frage