2010-11-18 138 views
0

我在運行IIS 6的Windows Server 2003計算機上部署了ASP.NET MVC2網站。 我幾乎在標準MVC項目中使用默認路由:ASP.NET MVC2路由IIS6 - 只有默認路由工作

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

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Products", action = "List", id = UrlParameter.Optional } // Parameter defaults 
     ); 

    } 

導航到http://localhost/MyApplication帶我到列表頁面就好了。導航到http://localhost/MyApplication/Products/Details/21給了我一個404。這個路由在VS2010的內置開發服務器上工作得很好。

我已經在標準的IIS通配符aspnet_isapi.dll映射到處提到 - 導航到列表頁面沒有工作之前,我沒有 - 但導航到默認路由以外的任何其他內容已損壞。

我真的想保留我的無插件網址。有沒有人有任何想法,爲什麼路由將工作的默認網頁,但沒有其他人?

*編輯:只是嘗試添加.aspx擴展,即現在我的路線是這樣的:

 routes.MapRoute(
      "Default", // Route name 
      "{controller}.aspx/{action}/{id}", // URL with parameters 
      new { controller = "Downtime", action = "List", id = UrlParameter.Optional } // Parameter defaults 
     ); 

而且它具有相同的行爲,但這次我得到的ASP 404頁,而不是在HTML中404頁...

*編輯2:試圖再次使用以下路線,並確保.mvc被映射到aspnet_isapi.dll:

 routes.MapRoute(
      "Default", // Route name 
      "{controller}.mvc/{action}/{id}", // URL with parameters 
      new { controller = "Downtime", action = "List", id = UrlParameter.Optional } // Parameter defaults 
     ); 

這一次我得到了一個「Internet Explorer無法顯示終端ay網頁'404風格的頁面。我現在有3個不同的404錯誤使用這3種不同的方法...

*編輯3返回編輯:我有網站在Windows XP專業版在IIS 5.1上運行,只有通配符重新映射在虛擬目錄,但但願我能得到它在Web服務器上運行...

回答

0

發現它 - 路由實際上工作,我的URL不是。我使用JavaScript來建立一些URL,而事實證明,我沒有鏈接到

的http://本地主機/所有MyApplication /控制器/動作/ ID

我其實是鏈接到

http:// localhost/Controller/Action/ID

構建像這樣的鏈接正在開發服務器上工作,但是一旦網站部署到Web服務器上的虛擬目錄,由於額外的應用程序,這些地址不正確名稱在URL中。

總之,小心你的網址 - 不要像我那樣用字符串構建它們。

1

首先,應按照此演練:http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

(只是爲了確保你不會錯過的東西已經) 。這顯示瞭如何獲得無擴展和擴展版本的工作。您可能至少要檢查擴展版本是否工作,以檢查其他事情是否沒有配置錯誤。

之後,也許你應該嘗試添加這樣的事情..

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

...因爲它可以在確定您的路線被破壞真正的幫助。

其他有些事情要檢查:

  • 是否配置了ASP.NET IIS?檢查虛擬目錄的屬性。在VDir上選擇配置按鈕,並檢查通常的ASP.NET擴展是否映射到.NET 2.0 ISAPI dll。這將是沿線

    C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll。

  • 在IIS上啓用ASP.NET 2(在IIS 6下,默認情況下此功能已關閉):在IIS管理器中,檢查Web Service Extensions文件夾以啓用它。

  • 你部署了global.asax嗎?

+0

我已經在IIS6無擴展URL(因此我提到'標準的IIS通配符aspnet_isapi.dll映射到處提到')的確切演練的部分,但它仍然不會路由到其他任何其他比默認值。 – LMF 2010-11-18 23:51:37

+0

剛剛編輯父 - 將擴展名添加到我的網址沒有幫助。無擴展方法在開發服務器上工作。如果路由是正確的,那麼路由調試器會有幫助,但IIS 6處理它的方式有些不可思議嗎? – LMF 2010-11-19 00:22:56

+0

所有的標準應用程序擴展都存在並映射到aspnet_isapi.dll,ASP.net 2.0。IIS Web服務擴展中允許使用設置,而global.asax則部署在虛擬目錄中。感謝您的建議,但我仍然處於虧損狀態。我試圖去思考導航到htp:// localhost/MyApp根目錄實際上是什麼意思,它啓動了一個必須被默認路由指向的頁面(它不叫做默認或索引,它是沒有配置爲默認內容頁面) - 但沒有別的。 – LMF 2010-11-19 00:52:43