2017-04-26 78 views
1

我有我的MVC項目中的下列控制器:使路由工作而不指定URL中的操作名稱。 - MVC

public class PressController : Controller 
    { 
     // GET: Press 
     public ActionResult Index() 
     { 
      return File("../press/FFF_PRESS.zip", ".zip"); 
     } 
    } 

我的路線

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

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

當我加載網站我的網址如下:

www.example.com 

該款顯示器主頁正確,當我點擊以下Action<li class="footer__navEl"><a href='@Url.Action("Index", "Press")'>PRESS</a></li>

我想的網址是

www.example.com/press 

,並返回zip文件。

然而,當我點擊這個Action我得到如下:

HTTP錯誤403.14 - 禁止 Web服務器被配置爲不列出此目錄的內容。

然而,當我指定

www.example.com/press/index 

返回正確的.zip文件。

現在,我增加了以下我routes.config:

routes.MapRoute("Press", "Press", new { controller = "Press", action = "Index" }); 

我仍然得到上述同樣的錯誤,有人可以提供一些線索成什麼樣我可能會丟失得到這個正確執行?

+0

你有沒有按照正確的順序設置MapRoute? '[domain]/Press'將要求顯示'Press'目錄的內容,默認情況下在IIS中禁用。路線順序或格式應該調整,以便'Press'控制器在默認值之前先評估。 –

回答

3

HTTP錯誤403.14 - 禁止Web服務器配置爲不列出此目錄的內容。

的錯誤表示你有物理目錄中名爲press您的Web服務器上。發生的事情是,Web服務器正在返回目錄,而不是將請求傳遞給MVC。 IIS中的默認設置不是列出目錄的內容,因此是錯誤。

您需要刪除press目錄(推薦),或重新配置IIS以運行MVC模塊,而不是使用runAllManagedModulesForAllRequests,即has some caveats

這根本不是路由問題 - 它是一個web服務器配置問題。