2015-11-20 264 views
0

我已經配置像MVC自定義URL路由

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

它工作正常重定向到相應的控制器和行動路線。

我想在TEST上添加另一個重定向,這樣如果有人使用www.mysite.com/TEST,它應該重定向www.mysite.com/Test/Home而不是給予403-禁止訪問:訪問被拒絕錯誤。

我想這樣,但無法實現它。

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

基本上,我想要做的就是來自www.mysite.com或www.mysite.com/TEST重定向到www.mysite.com/TEST/Home

爲了增加混亂,我的應用程序根目錄中還有一個物理文件夾TEST。只是想知道是否在那裏保持另一個web.config會解決?我試過,但沒有運氣

請告知我在這裏失蹤。謝謝

經過一些實驗後,我發現物理文件夾TEST導致重定向規則失敗。我改變了我的路線TEST1在URL而不是測試,它的工作。但是,我無法重命名TEST文件夾。使用第一條路線,請告知

+0

看看這些路線的添加順序。 – Dev

+0

是的,我也試過 – techspider

+0

我不確定,但它可能是因爲物理文件夾TEST,我得到403 - 禁止錯誤 – techspider

回答

2

請設置上面的路由配置屬性RouteExistingFiles爲true

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.RouteExistingFiles = true; 

     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

    } 

這應該允許您保留文件夾的名稱以及路由名稱爲「TES T」。讓我知道它是如何適合你的

+0

真棒!這是我正在尋找的。謝謝jonni – techspider

+0

它創造了另一個問題...你能看到http://stackoverflow.com/questions/33832209/mvc-routeexistingfiles-issue? – techspider

0

保持:

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

並在Web.config中添加此:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"></modules> 
    <handlers> 
    <remove name="UrlRoutingHandler"/> 
    </handlers> 
</system.webServer> 
+0

我已經有 – techspider

+0

我編輯了我的答案,檢查它現在是否有效。 –

+0

nope,仍然是同樣的問題。請看我更新的問題 – techspider