我正在使用与VS2010 Beta 2一起安装的ASP.NET MVC Preview 2.我正在连接WindsorControllerFactory,如下所示:
Container = new WindsorContainer();
Container.RegisterControllers(typeof(HomeController).Assembly);
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(Container));
我的HomeController有一个依赖项传递给构造函数,运行时我收到以下错误:
没有为此对象定义无参数构造函数。
[MissingMethodException: No parameterless constructor defined for
这个对象。] System.RuntimeTypeHandle.CreateInstance(RuntimeType type,Boolean publicOnly,Boolean noCheck,布尔& canBeCached, RuntimeMethodHandle&安培; ctor,布尔& bNeedSecurityCheck)+0 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,Boolean fillCache)+86 System.RuntimeType.CreateInstanceImpl(布尔 publicOnly,布尔 skipVisibilityChecks,布尔值 fillCache)+230 System.Activator.CreateInstance(类型 type,Boolean nonPublic)+67 System.Activator.CreateInstance(类型 类型)+6 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(的RequestContext requestContext,类型controllerType) 522
[InvalidOperationException: An error occurred when trying to create a
类型的控制器 'Xenotar.WedPlannerPro.Controllers.HomeController'。 确保控制器有一个 无参数公共构造函数。] System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(的RequestContext requestContext,类型controllerType) 659 System.Web.Mvc.DefaultControllerFactory.CreateController(的RequestContext requestContext,String controllerName) +198 System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext)+225 System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext的 httpContext)+86 System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext的 httpContext)+36 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步,布尔& completedSynchronously) 75
通过查看此堆栈跟踪,它看起来不像MVC正在使用WindsorControllerFactory,而是仍然使用DefaultControllerFactory?
在MVC 1.0中执行此操作时,它可以正常工作。
解
MvcContrib与ASP.NET MVC 2不兼容。
答案 0 :(得分:0)
您应该能够修改MvcContrib以使用ASP.NET MVC 2.控制器注册的代码非常少。