2014-02-12 48 views
-1

我已經改變了默認路由從{控制器}改變佔位符,以{控制器1}

routes.MapRoute("Default", 
       "{controller1}/{action1}", 
       new { controller = "Home", action = "Index"} 
       ) 

如果我使用的URL當MVC路由問題「/ MvcDemo /」(以下MVC演示是我的項目) 我開始變得的Http 403.14錯誤

如果我使用「/ MvcDemo /首頁/指數」它工作正常 和另一個URL「/ MvcDemo /播放/詳細信息」也被映射到默認 即使與這樣的控制器行動方法存在

任何人都可以幫助我如何controller1/action1可能導致此問題

+0

403被禁止...這可能是由於您的文件夾的權限引起的,但也是由您的資源上的重複名稱引起的。例如。您有一個具有相同操作名稱的文件夾,並且IIS嘗試分派資源,而不是路由請求。 – celerno

+0

嘗試將'action1 = UrlParameter.Optional'添加到默認對象以及'controller1'。你的路由也總是映射到默認的'Index(string controller1,string action1)'方法。 – vorrtex

回答

1

第三個參數是默認值。您已更改佔位符名稱,但尚未更改默認值名稱。所以,基本上沒有默認的controller1action1值來填寫路由時是否缺少路由,這就是爲什麼/MvcDemo/路由失敗。

+0

但是,當我鍵入/ MvcDemo/home/index它映射到家庭控制器和索引方法爲什麼這樣甚至/ MvcDemo /播放器/細節映射到默認值的家庭和索引,即使我有PlayerController類與詳細信息索引方法爲什麼是如此。 – GPuri

+0

感謝您的回覆,可以解釋我爲什麼上面的行爲是存在的 – GPuri

+1

因爲在這兩種情況下,您都*傳遞* controller1和action1的值,只有當您不傳遞一個值時,回到默認值,在這種情況下,它不存在。 –