2011-09-18 66 views
2

我已經將MVC3 web應用程序添加到由普通的舊html文件組成的現有網站。當你請求一個特定的文件時,這很好,但是我沒有想到的是,通過改變站點來使用.Net 4,它不再需要注意IIS中的默認文檔設置(在這種情況下是IIS 6)。因此,例如,我可以請求www.something.com/index.html,但如果我請求www.something.com,我會得到一個資源未找到的錯誤頁面。 Global.asax中是否有MapRoute,我可以指定將站點路由網址映射到index.html?如何在MVC3網站上獲取默認html頁面

+0

你看了菲爾哈克[博客文章(HTTP:/ /haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx)我已鏈接到[我的答案](http://stackoverflow.com/questions/7460870/how-to-get-a-default-html-page-on-mvc3-site/7460903#7460903)關於配置你的IIS 6.0以支持默認情況下IIS 6.0不支持的擴展名的URL。 –

+0

是的,但我不確定它與我的問題完全相關。我只是想將請求重定向到站點根目錄index.html。 Phil的帖子更多的是關於映射到控制器。我會回去再看看今晚。 –

+0

如果你想在用戶請求'http:// www.something.com /'時執行一些控制器動作,你肯定需要一個通配符映射,如Phil Haack所解釋的。如果您想要提供靜態HTML頁面,那麼只需將此HTML頁面作爲默認文檔添加到IIS控制檯中虛擬目錄的屬性中即可。 –

回答

3
routes.IgnoreRoute(""); 

允許請求落入站點配置中定義的默認文檔。我在這個項目中只有一個控制器和路由,用於客戶端的Ajax請求。我希望網站的其他部分能繼續像純html一樣行事。使用routes.IgnoreRoute(「」) MVC3應用程序忽略允許IIS返回默認文檔的請求。非常感謝您的建議。

+1

這只是在MVC3中引發錯誤:「路由URL不能以'/'或'〜'開頭,並且不能包含'?'字符 參數名稱:routeUrl「 – Gullbyrd

+1

同樣的問題在這裏不能包含'〜'或'?' – Anthony

+0

它應該是'routes.IgnoreRoute(「」);' –

1

這很正常。 IIS 6.0不支持無擴展名的網址。 Phil Haack解釋說您需要一個wildcard mapping

2

在Global.asax中,你可以嘗試這樣定義一個

routes.MapRoute("", "index.html", new { controller = "Home", action = "Index" }); 

一個規則,但恐怕與IIS 6,你必須處理Wild card mapping

+0

我不確定我是否清楚地表達了我的問題。我不想將index.html的請求映射到控制器。我想將請求重定向到站點根目錄index.html。 –

+0

在回答中的評論後,我明白你的問題。嘗試看這個答案http://stackoverflow.com/questions/1149750/using-asp-net-routing-to-serve-static-files/3112192#3112192 – Iridio

6

看起來像是發生了變化,我不得不這樣做

routes.IgnoreRoute(""); 

ASP.NET抱怨路線開始「/」

+0

確認:'路線。IgnoreRoute(「/」)'給出錯誤 - 此答案按預期工作。 – Matt