0
MVC 6 알파 4에서 몇 가지 실험을하고 있습니다. 컨트롤러를 수동으로 활성화하고 HomeController 대신 반환하지만 작동하지 않습니다. 어떤 도움을주십시오 ..수동으로 MVC 6에서 컨트롤러를 인스턴스화합니다. alpha4
지금까지이 코드를 사용하여 자체 컨트롤러 팩토리를 만들었습니다.
public class MyControllerFactory : IControllerFactory
{
public object CreateController(ActionContext actionContext)
{
var actionDescriptor = actionContext.ActionDescriptor as Microsoft.AspNet.Mvc.ReflectedActionDescriptor;
Type controllerType = Type.GetType("Hello.Controllers.MyController");
var controller = _typeActivator.CreateInstance(_serviceProvider, controllerType);
actionContext.Controller = controller;
_controllerActivator.Activate(controller, actionContext);
return controller;
}
}
코드를 디버깅했습니다. MyController
의 생성자가 호출되고 MyController
이 CreateController
메서드에서 반환되지만 오류가 발생합니다. 디버거는 IActionResult Index()
에 도달하지 않습니다. 여기에 오류가 있습니다.
System.Reflection.TargetException: Object does not match target type.
at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at Microsoft.AspNet.Mvc.ReflectedActionExecutor.<ExecuteAsync>d__2.MoveNext()
"HomeController 대신"은 무엇을 의미합니까? 왜 당신의 "HomeController"가 여기에 선택되지 않도록 당신의 경로를 바꾸지 않습니까? – bzlm