2012-04-09 40 views
0

我想要做的是基本上能夠輸入到網址mysite/username,它會根據用戶名將它們重定向到那裏的頁面(mysite/Profle/Default.aspx?username=username)。asp.net url routing

+0

您是要求直接在瀏覽器url或頁面的UI(文本框)中鍵入用戶名嗎? – 2012-04-09 11:53:01

+0

在瀏覽器的網址,所以如果用戶輸入mysite/luke它會帶我到頁面mysite/profile/Default.aspx?username = luke – Houlahan 2012-04-09 11:58:36

+2

也許你需要URL重寫來幫助你。請參閱http://msdn.microsoft.com/en-us/library/ms972974.aspx獲取幫助...... – RohitWagh 2012-04-09 14:11:14

回答

0

我認爲這可能需要更多的URL重寫。

由於mysite/usernamemysite/directory之間沒有真正的區別(通過urlrewrite正則表達式區分),所以您可能需要做更多這樣的事情。

在您的global.asax中,重寫BeginRequest函數。檢查請求路徑是否與已知的用戶名匹配。如果有,重定向。如果沒有,請讓請求自然繼續。請注意,如果您的用戶名與您的網站中的某個目錄匹配,這可能會給您帶來麻煩。此外,它確實揭露了惡意用戶通過學習將哪些名稱重定向到登錄頁面來找出您網站的用戶名的方式(儘管很耗時)。

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     var url = HttpContext.Current.Request.RawUrl; 

     IEnumerable<string> userNames = GetKnownUserNames(); //Get known user names from your repository 

     if (userNames.Contains(url)) 
     { 
      Response.Redirect(String.Format("mysite/Profle/Default.aspx?username={0}", url)); 
     } 
    } 

您可能需要做一些調整以使比較正常工作,但是這樣做可以。