将Controller工厂设置为自定义控制器后,可以使用DefaultControllerFactory吗

时间:2018-07-13 06:06:50

标签: c# asp.net-mvc dependency-injection

我正在尝试将自定义ControllerFactory实现为:

public class TodoController : DefaultControllerFactory
{
    public override IController CreateController(RequestContext requestContext, string controllerName)
    {


        if (controllerName == "Tasks")
        {
            return new TasksController(new TaskContext());
        }
        return base.CreateController(requestContext,controllerName);
    }
}

ControllerBuilder.Current.SetControllerFactory(new TodoController());

除了调用TasksController的路由外,我在所有路由上一直都异常。例外是:

  

找不到路径'/'的控制器或未实现IController。

我已经看到了其他实现this article中提到的自定义控制器的方法,该方法使用反射为所有 other 请求实例化控制器。

但是我很困惑,为什么我不能调用DefaultControllerFactory来实例化控制器?

1 个答案:

答案 0 :(得分:0)

topViewController可能没有TaskContext()可用。 以下链接可能有助于说明。 Controller Creation via Activator..CreateInstance

这里是一个引号“ ... DefaultControllerFactory(这是默认工厂)的确确实在使用RequestContext引发了Http 404 Not Found异常(需要时),但其他Controller工厂(必须这样做)实现IControllerFactory)可以使用它。。”