1. 程式人生 > >設定ASP.NET MVC站點預設頁為html頁

設定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> 節註冊一個。

",這說明路由設定已經起了作用,看來是.html沒有找到處理程式,哈哈,離成功不遠了。

    在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