遇到這樣一個問題:使用asp.net4.0+asp.net mvc2開發時候,將首頁生成為靜態的default.htm文件,但部署到IIS7上,使用asp.net4.0 Classic線程池,
會出現404, IIS的默認文檔也包括default.htm這個文件。
百思不得其解之后估計是System.Web.Routing的問題,將首頁默認為 /Home/Index 了。如果在 /Home/Index 添加跳轉代碼:
HttpContext.Current.Response.Redirect("default.htm");
這表明上解決問題,但訪問www.0592jia.com的時候會跳轉到www.0592jia.com/default.htm , 這對SEO影響是非常大的,甚至沒人愿意跟你換鏈接。
所以只能通過一個方法,讓當前請求的路徑 與 默認的路由表無法匹配。這樣就會讀到default.htm這個默認文檔了!
全局配置文件的默認路由代碼如下:
正是由于上面的路由,導致IIS將/Home/Index做為了首頁,如果我們將action="Index"修改為action="IndexPage"
那么結果還是一樣的,為什么呢?因為還是能夠與這條路由匹配。解決方法只有讓請求路徑與路由不匹配!
聰明的您一定想到了,我們應該通過對路由加上約束使其不匹配。
修改后的默認路由為:
我們讓默認的action的值1與約束的正則不匹配,也就讓請求路徑與這條路由不匹配。問題完美解決!
原創文章轉載請注明出處:http://www.ops.cc/archive.aspx/view/aspnet4-default/