0

我添加了默認控制器和操作名稱,但仍然缺省路由不適用於該區域。這裏是我的代碼:默認區域路由不能在mvc中工作5

AreaRegistration.cs

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "Admin_default", 
     "Admin/{controller}/{action}/{id}", 
     new { controller ="LogIn", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

RouteConfig.asax

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.LowercaseUrls = true; 
    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

當我去http://webapplocal/admin/我得到下面的錯誤: 403禁止:未配置默認文檔對於請求的URL,並且目錄瀏覽在服務器上未啓用。

+0

感謝編輯 –

+1

可能區分大小寫。嘗試/管理員/雖然我不明白你爲什麼不在RouteConfig中映射它 – Steve

+0

@steve路由不區分大小寫。 –

回答

1

我添加了RouteTable.Routes.RouteExistingFiles = true;在RouteConfig.cs中,它工作

0

這看起來像一個類似的問題,我跑進:ASP.NET MVC 4 Parameters Separated by Forward Slashes "/" not passing args properly

我建議加入圖路線到同一位置作爲默認圖路線,在RouteConfig.asax。這是因爲路由是順序敏感的,並且當第一個路由失敗時,可能永遠不會查看單獨的路由例程。

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

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

在嘗試你的解決方案後仍然得到同樣的錯誤 –

+0

糟糕。我實際上沒有{controller} - 更新。 – Thumper

+0

你怎麼沒有控制器大聲笑呢?現在我在管理員下的所有觀點都給出了一個mtg中的404:D –