簡體   English   中英

CastleWindsor無法在ASP.NET MVC中使用路由

[英]CastleWindsor not working with route in asp.net mvc

我在ASP.NET MVC中有一個WebApplication,使用的是CastleWindsor依賴注入,但是當我添加route屬性時,應用程序返回以下錯誤“找不到控制器”。

我的ControllerInstaller

public class ControllerInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Classes.FromThisAssembly()
                            .BasedOn<IController>()
                            .LifestyleTransient());
    }
}

我有以下控制器:

[Route("espetaculos")]
[FrontAuthorize]
public class EventController : Controller
{
    #region DependencyInjection

    private readonly IApplication applicationWeb;
    private readonly IEventBusiness eventBusiness;
    private readonly IShowBusiness showBusiness;
    private readonly ISession sessionWeb;
    private readonly ILog iLog;

    public EventController(IEventBusiness eventBusiness, IShowBusiness showBusiness, IApplication applicationWeb, ISession sessionWeb, ILog iLog)
    {
        this.eventBusiness = eventBusiness;
        this.showBusiness = showBusiness;
        this.applicationWeb = applicationWeb;
        this.sessionWeb = sessionWeb;
        this.iLog = iLog;
    }

當我訪問路線“ / 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" }
        );
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM