1

Visual Studio 2012 RC を使用して MVC 4 アプリケーションを作成しました。Ninject を依存関係インジェクターとして使用し、Azure Emulator を使用するローカル マシンで問題なく動作します。アプリケーションは .NET 4.0 を対象としています。ただし、それを Web ロールとして Azure にデプロイすると、次の例外が発生します。

[MissingMethodException: No parameterless constructor defined for this object.]
   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) +117
   System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +247
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +106
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +84

[InvalidOperationException: An error occurred when trying to create a controller of type 'Poller.WebUI.Controllers.QuestionsController'. Make sure that the controller has a parameterless public constructor.]
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +247
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +85
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +270
   System.Web.Mvc.<>c__DisplayClass6.<BeginProcessRequest>b__2() +66
   System.Web.Mvc.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a() +19
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 func) +161
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +405
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375

コンストラクターパラメーターとして渡されるDBリポジトリが必要なため、パラメーターなしのコンストラクターをQuestionsControllerに追加したくありません。このパラメーターは、Ninject によって正しく入力される必要があります。

ここで何が問題になる可能性があるのか​​ 誰にもわかりませんか?

4

1 に答える 1

0

私もこの問題に遭遇しました。私たちの場合、MVC アプリに Windows 2008 SP1 ではなく Windows 2008 R2 を使用していることを確認する必要がありました。構成ファイルを更新するOS="2"か、管理パネルにログインして、Web ロールを選択し、[OS のアップグレード] をクリックします。これがあなたの問題かどうかははっきりとは言えませんが、MVC 3 サイトでの私たちの問題でした。

于 2012-07-13T12:52:28.040 に答える