2012-04-09 10 views
0

基本的には、ウェブアドレスmysite/usernameを入力してそこにユーザー名に応じてページ(mysite/Profle/Default.aspx?username=username)をリダイレクトします。asp.net url routing

+0

ブラウザのURL、またはページのUI(テキストボックス)に直接ユーザー名を入力するよう求めていますか? –

+0

をブラウザのURLに入力すると、ユーザーがmysite/lukeに入力した場合、mysite/profile/Default.aspx?username = lukeというページに移動します。 – Houlahan

+2

URLを書き換える必要があります。いくつかのヘルプについては、このhttp://msdn.microsoft.com/en-us/library/ms972974.aspxを参照してください... – RohitWagh

答えて

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)); 
     } 
    } 

比較がうまくいくように調整する必要があるかもしれませんが、これが有効です。