2009-01-07 58 views
12

我的默認文檔是在子文件夾不在根目錄我怎麼能使它在asp.net 2.0網站的默認。asp.net網站在子文件夾中的默認文檔

嘗試將iis7的默認文檔設置爲'/pages/default.aspx' '〜/ pages/default.aspx',但沒有奏效。

+0

如果您發現如果您嘗試指定默認文檔(如「子文件夾/子文件夾/文件」),將會找到並投放內容,但所有鏈接都已損壞,因爲Web瀏覽器仍然認爲它位於原始父級夾。正確執行此操作的唯一方法是使用HTTP重定向,無論是通過JavaScript還是通過Web服務器響應。觸發重定向響應IMO的最好方法是通過web.config中的位置標記來觸發重定向,僅針對根中的默認文檔,而不是整個打開文件夾的重定向。 – Triynko 2013-05-08 23:22:09

+0

只需將default.aspx文件留在根文件夾中,並在web.config文件中,使用「位置」標籤進行特定於該頁面的重定向,如下所示:`<系統。webServer>' – Triynko 2013-05-08 23:24:03

回答

15

默認文檔與起始頁不一樣。默認文檔意味着如果我請求mysite.com/somefolder並且沒有指定文件,那麼IIS應該顯示哪個文件。

如果要使用特定的頁面爲主頁,創建一個Default.aspx的文件,並在寫這個的代碼隱藏類:

public override void ProcessRequest(HttpContext context) { 
    context.Response.Redirect("pages/default.aspx", true); 
} 

由於客戶可能已經禁用了JavaScript,服務器端方法會更可靠。但最好是發出永久重定向,而不是簡單的Response.Redirect。從SEO的角度來看,使用JS做它也是不好的。

+0

做代碼隱藏是時間不必要的拖延 - 只需一行JavaScript即可。 – 2009-01-07 20:11:40

2

默認文檔是子文件夾特定的東西 - 你試圖做的不會(直接)工作。在根中設置一個default.htm文件,並將其刷新到您的真正「主頁」。

你應該問的更好的問題是你的主頁如何在根目錄下出現。

8

您不需要創建一個虛擬的Default.aspx頁面。

在你的Global.asax.cs文件,寫入以下內容:

public void Application_Start(object sender, EventArgs e) 
{ 
    var routeCollection = RouteTable.Routes; 
    routeCollection.MapPageRoute("DefaultRoute", string.Empty, "~/YourDesiredSubFolder/YourDesiredDocument.aspx"); 
} 

說明:

  • 的Application_Start代碼是保證在應用程序啓動一次且只運行一次。
  • 第一行代碼獲取應用程序的URL路由集合。
  • 第二行代碼定義了一個指向您想要的子文件夾中的內頁的新路由。
  • 第二個參數是空的,表示在沒有請求特定頁面且沒有默認文檔存在時使用此路由。