C# CastleWindsor在asp.net mvc中不使用路由

C# CastleWindsor在asp.net mvc中不使用路由,c#,asp.net,asp.net-mvc,asp.net-mvc-4,castle-windsor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Castle Windsor,我在ASP.NET MVC中有一个Web应用程序,使用CastleWindsor的依赖项注入,但当我添加路由属性时,应用程序返回以下错误“控制器未找到” 我的管制员 public class ControllerInstaller : IWindsorInstaller { public void Install(IWindsorContainer container, IConfigurationStore store) { container.Register

我在ASP.NET MVC中有一个Web应用程序,使用CastleWindsor的依赖项注入,但当我添加路由属性时,应用程序返回以下错误“控制器未找到”

我的管制员

public class ControllerInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Classes.FromThisAssembly()
                            .BasedOn<IController>()
                            .LifestyleTransient());
    }
}
当我访问路径“/espetaculos”时,这里是错误

城堡只需要控制器的完整路径

编辑 我的RouteConfig课程

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

        //routes.MapMvcAttributeRoutes();

        //AreaRegistration.RegisterAllAreas();

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

正如我所怀疑的,您显然没有在MVC中启用属性路由。如果不这样做,在控制器和操作上添加
[Route]
属性将无效

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

        // This line is required in order to scan
        // for [Route] attribute in your controllers
        routes.MapMvcAttributeRoutes();

        //AreaRegistration.RegisterAllAreas();

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

正如我所怀疑的,您显然没有在MVC中启用属性路由。如果不这样做,在控制器和操作上添加
[Route]
属性将无效

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

        // This line is required in order to scan
        // for [Route] attribute in your controllers
        routes.MapMvcAttributeRoutes();

        //AreaRegistration.RegisterAllAreas();

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

这可能是一个路由问题,与温莎城堡无关。当您使用“espetaculos”路径时,您希望调用哪个控制器?您是否有名为“espetaculos”的控制器?请发布您的路由配置。当您删除Castle、向控制器添加默认构造函数并让MVC创建控制器时会发生什么?结果是一样的还是真的有效?@NightOwl888项目中唯一的路由配置是属性route。@Steven,正常工作这可能是路由问题,与castle windsor无关。当您使用“espetaculos”路径时,您希望调用哪个控制器?您是否有名为“espetaculos”的控制器?请发布您的路由配置。当您删除Castle、向控制器添加默认构造函数并让MVC创建控制器时会发生什么?结果是一样的还是真的有效?@NightOwl888我在项目中唯一的路由配置是属性路由。@Steven,正常工作谢谢!它的工作!但是现在我有了“mvcapapplication.container”,谢谢!它的工作!但是现在我有了“mvcapapplication.container”null