2

現在のプロジェクトは、IOC / DI用のmvc-turbines(およびユニティ)を使用してASP.NETMVC1で記述されています。

2008年からアプリケーションを起動しようとすると、すべて正常に動作しますが、2010年以降、「パラメーターなしのコンストラクターがありません」というエラーが発生し続けます。

なんで?どちらも同じ.Netフレームワークを対象としています。VS 2010ソリューションは、デフォルトのコントローラーファクトリを引き続き使用します。これをデバッグするための提案はありますか?

[MissingMethodException: No parameterless constructor defined for this object.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +86
   System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +67
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80

[InvalidOperationException: An error occurred when trying to create a controller of type 'CommonProject.Web.Shared.Controllers.MyController'. Make sure that the controller has a parameterless public constructor.]
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +190
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +68
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +118
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +46
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +57
   System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7
   System.Web.Mvc.MvcHttpHandler.VerifyAndProcessRequest(IHttpHandler httpHandler, HttpContextBase httpContext) +61
   System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContextBase httpContext) +111
   System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContext httpContext) +40
   System.Web.Routing.UrlRoutingHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +7
   CommonProject.Web._Default.Page_Load(Object sender, EventArgs e) in 
4

1 に答える 1

1

HttpApplication(Global.asax.cs)のApplication_Start()メソッドで、コントローラーファクトリをカスタムコントローラーファクトリに設定していると想定しています。

何が起こっているのかというと、このコード行が実行される前に、Application_Start()のどこかに例外がスローされていると思います。これが発生した場合、Webアプリケーションへの後続の呼び出しはこの例外をバイパスし、アプリケーションの誤動作(カスタムコントローラーファクトリを使用しないなど)を引き起こす可能性があります。

Application_Start()をデバッグし、正しく実行されていることを確認します。ELMAHを使用している場合は、例外がログに記録されるはずです。

于 2012-03-05T15:50:58.857 に答える