2011-02-23 89 views
3

我想將這3個路徑路由到默認的基本url路徑。無頁面名稱的url重寫

www.mysite.com/page1.aspx 
www.mysite.com/page2.aspx 
www.mysite.com/page3.aspx 

我希望出現在地址欄這樣這3頁:www.mysite.com

只有在我的asp.net項目這3個頁面。

我該如何在IIS 6.0的asp.net 3.5 SP1中做到這一點。

void Application_BeginRequest(object sender, EventArgs e) 
{ 
      switch (HttpContext.Current.Request.Url.AbsolutePath.ToLower()) 
      { 
       case "/page1.aspx": 
        HttpContext.Current.RewritePath("~/default.aspx"); 
        break;     
       case "/page2.aspx": 
        HttpContext.Current.RewritePath("~/default.aspx"); 
        break;     
       case "/page3.aspx": 
        HttpContext.Current.RewritePath("~/default.aspx"); 
        break;    
      } 
    } 

有了這個代碼,出現錯誤:

Server Error in '/' Application. 
The resource cannot be found. 
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /default.aspx 

問題是重寫的URL。它正在搜索default.aspx文件。沒有default.aspx文件。有page1.aspx文件。

它爲什麼在搜索default.aspx?我只是想重寫路徑..

回答

0

您對HttpContext.Current.RewritePath呼叫說:「如果有人詢問/page1.aspx(或/page2.aspx/page3.aspx),爲他們服務,而不是~/default.aspx」。

當然,如果~/default.aspx不存在,這將拋出一個404

你到底想幹什麼?你說你想「將這3條路徑路由到默認基礎url路徑」,但那條路徑如果~/default.aspx不存在?

+0

我只是想重寫url,不想路由另一個頁面。 – Jack 2011-02-24 07:43:36

+0

我不確定你的意思是「重寫網址」。重寫URL意味着提供除URL指向的物理頁面以外的頁面。當用戶請求「http:// www.mysite.com/page1.aspx」時,您想要發生什麼**? – Carson63000 2011-02-24 23:41:53