設定ASP.NET MVC站點預設頁為html頁
更新:上週的解決方法在Area=""使用預設路由對映時會出問題,見解決方法二
今天部署了一個Asp.Net MVC站點,希望它的預設頁是一個html頁,在vs2010中給站點根目錄增加了default.html,然後呼叫沒有什麼問題,但部署到IIS7上,就是不起作用,試了routes.IgnoreRoute,但還是訪問原來的路由設定的controller。
上網搜尋了一下,找到下面兩種解決的方法:(但我感覺都不好,最後自己找了一個解決的方法,感覺還行)
方法1:
在Global.asax檔案中增加
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Context.Request.FilePath == "/") Context.RewritePath("Default.html");
}
方法2:
新建一個路由DefaultController,並把它設定為預設路由,在Action中增加
Redirect(Url.Content("~/Default.html"));
我的方法:
使用Web窗體應用程式路由MapPageRoute,開始時還碰到點問題。我增加routes.MapPageRoute("Default_Page", "/", "~/Default.html"),iis報錯——路由 URL 不能以“/”或“~”字元開頭,並且不能包含“?”字元 。要修改為routes.MapPageRoute("Default_Page", "", "~/default.html");(注意如果你的預設頁是aspx頁面,將default.html修改為default.aspx,到這裡就應該可以工作了)。這時iis報錯變為——"沒有為副檔名“.html”註冊的生成提供程式。可以在 machine.config 或 web.config 中的 <compilation><buildProviders> 節註冊一個。
在Web.config檔案中的<compilation>節點中增加:
<buildProviders>
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
設定為其他檔案可以依此類推。wangzhi
2011-04-25更新: wangzhi
解決方法二:
1)站點根目錄增加了default.html;
2)修改Global.asax預設的路由註冊,去掉預設controller:
routes.MapRoute(
"Default", // 路由名稱
"{controller}/{action}/{id}", // 帶有引數的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 引數預設值
);
routes.MapRoute(
"Default", // 路由名稱
"{controller}/{action}/{id}", // 帶有引數的 URL
new { action = "Index", id = UrlParameter.Optional } // 引數預設值
);
將iis中的預設文件配置為default.html