未找到路径'/ Content / bootstrap'的控制器或未实现IController

时间:2014-08-24 05:49:36

标签: asp.net-mvc twitter-bootstrap structuremap

我已经将StructureMap设置为DI的选择,并且在注册我的自定义控制器工厂时,会弹出此错误(如果未设置StructureMap,则不会弹出错误)。我不知道为什么会出现这种错误,看起来很奇怪,我错过了什么?我已经看到围绕这个问题的评论,但没有明确的答案。如果我错过了正确的解决办法,你能指出我正确的方向吗?

public class StructureMapControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        var appRepo = new ApplicationDbContext();
        var settingsRepo = new SettingRepository(appRepo);

        if (controllerType == typeof(SettingsController))
        {
            return new SettingsController(settingsRepo);
        }

        return base.GetControllerInstance(requestContext, controllerType); 
    }
}

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        // This initializes our database
        Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
        ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());

1 个答案:

答案 0 :(得分:1)

在调试模式下运行时,我刚刚遇到这个可能有误导性的消息。 我发生的事情是我从BundleConfig.cs中删除了modernizr

//bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
//            "~/Scripts/modernizr-*"));

但是当我在我的项目中创建了新区域时,它在加载modernizr的调用中已经搭建了脚手架

@Scripts.Render("~/bundles/modernizr")

您需要将此调用移至不存在的捆绑包。我建议你遇到同样的问题。

我相信这些信息将来会对某人有所帮助。