1

現在、私が取り組んでいる MVC 3 アプリケーションをテスト Web サーバーにデプロイしようとしていますが、すべてを正しくロードするという大きな問題が発生しています。これについてできるだけ多くの情報を提供するために、bin デプロイを行っています (すべての参照をローカルにコピーするように送信しました)。サーバ。私が使用しているコンポーネントは次のとおりです。

Entity Framework 4.3.1 Oracle ODAC 11.2.0 (バージョン 4.112.3.0)

このアプリケーションには 2 つの Entity Framework オブジェクトがあり、1 つは SQL Server データベースに送信され、もう 1 つは Oracle 10g データベースに送信されます。問題は、Entity Framework オブジェクトが Oracle データベースに移動することにあると思います。これは私の最初の MVC 3 プロジェクトであり、最初の展開です (ここには「新しい」変数がたくさんあります)。この問題を解決するにはどうすればよいですか? 私のローカル マシンではすべてが問題なく動作します。問題が発生するのは、プロジェクトをサーバーにデプロイするときだけです。

私がこれまでに試したこと:

すべてのコントローラーは、エンティティ フレームワーク オブジェクトのインスタンスが存在するベース コントローラー (BaseController) から継承します。BaseController から継承するコントローラーの Index ビューにアクセスできませんが、HomeController は Controller から継承します。このページは正しく動作します。他の Controller から継承しようとしましたが、これにより Index ビューにアクセスできますが、BaseController に戻ると、スタック トレースでエラーが再び発生します。エラーは、エンティティ フレームワーク オブジェクトを oracle データベースに送信することを宣言している行で発生しているようです。

protected internal RadixWebDataPRDX dbRadixData = new RadixWebDataPRDX();

Oracle.DataAccess.dll をコピーしていますが、それでも問題が発生します。

このエラーのスタック トレースを以下に示します。

「/RadixMVC」アプリケーションでサーバー エラーが発生しました。

要求された .Net Framework Data Provider が見つかりません。インストールされていない可能性があります。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.ArgumentException: 要求された .Net Framework データ プロバイダーが見つかりません。インストールされていない可能性があります。

ソース エラー:

現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

スタックトレース:

[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

バージョン情報: Microsoft .NET Framework バージョン:4.0.30319; ASP.NET バージョン:4.0.30319.272

4

1 に答える 1

1

これに対する解決策は、ボブが言ったことでした。ODAC コンポーネントもサーバーにインストールする必要がありました (これは私が知りませんでした)。ありがとうボブ!

于 2012-07-19T13:30:07.427 に答える