2010-11-19 27 views
1

首先讓我解釋一下,我在一個託管的解決方案,並且我沒有太多的辦法可以配置和設置IIS 6的方式。使用ASP.NET MVC2,空路由沒有被IIS轉發6

我MVC2工作在一定程度上,我使用下面的Global.asax代碼:

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

     routes.MapRoute(
      "Default", 
      "{controller}.aspx/{action}/{id}", 
      new { action = "Index", id = "" } 
     ); 

     routes.MapRoute(
      "Root", 
      "", 
      new { controller = "Default", action = "Index", id = "" } 
     ); 
    } 

在第一條路線,我必須指定{}控制器的.aspx,由於IIS 6不能夠執行非aspx代碼(或類似的東西,不太確定)。

這很好,下面的工作: hxxp://mysite.com/home.aspx,hxxp://mysite.com/projects.aspx,hxxp://mysite.com/contact.aspx

哪些都是控制器,我也可以運行他們尊重的操作。

問題是,我不能正確地做一個空的URL(即hxxp://mysite.com/),它給了我一個「目錄列表被拒絕」的錯誤。

我有一個問題,是在一個default.aspx文件位於根(它執行),我可以加載主控制器沒有使用一個簡單的Response.Redirect?

謝謝 馬修

回答

1

您得到「拒絕目錄列表」這一事實意味着isapi filetr與使用MVC不匹配。

+1

這是最準確的答案,但並沒有真正解決我的問題。解決方案是隻包含一個創建新的MvcHttpRequest的「default.aspx」頁面。 – Matthew 2011-08-23 20:25:58

0

,你得到「拒絕目錄列表」,這意味着你沒有一個默認的文件,因此服務器試圖證明文件上的根文件夾列表。

將默認文檔更新爲「Default.aspx」之類的內容。您的託管服務提供商應該有一個選項。這很常見。

+0

MVC2此行爲不使用默認的文件,這就是問題所在。它提供了通過Global.asax文件的所有路由。 – Matthew 2010-11-19 16:38:25

+0

不,我認爲你看到的問題是IIS,而不是網站。嘗試添加一個默認文檔,以便IIS知道在沒有文檔顯示時將請求路由到什麼地方。之後,您的MVC路線將提取請求。 – 2010-11-19 18:52:35

+0

我確實嘗試過,它只是加載Default.aspx,並且根本沒有拿起路線。 – Matthew 2010-11-19 19:22:42

0

您可以禁用IIS6和IIS7

// Disable IIS looking at physical files and directories 
RouteTable.Routes.RouteExistingFiles = true;