1

ASP.NET 4 / VB.NET / IIS を使用して Web アプリケーションを構築しています。人々は、次のような URL を介して Web アプリケーションにアクセスします。

http://url.com/personname

たとえば、Jane Doe、John Doe、James Doe のそれぞれの URL は次のとおりです。

http://url.com/janedoe

http://url.com/johndoe

http://url.com/jamesdoe

何らかの方法でそれらを (入力された名前に関係なく) default.aspx ページに渡す必要があります。このページは、URL の名前部分を取得し、それを使用して情報を含むデータベースに対してルックアップを実行します。この特定の人物に関する情報を表示し、その情報に基づいてパーソナライズされたページを表示します。

たとえば、Jane Doe は次の場所にアクセスします。

http://url.com/janedoe

彼女は透過的に default.aspx にリダイレクトされ、(上記の URL から) 彼女の名前が取り込まれ、データベースと照合されます。彼女はこのサイトに一度もアクセスしたことがないので、welcome.aspx に透過的にリダイレクトされ、アカウントの登録を求められ、"Hello Jane!" と表示されます。等々...

次にジェーンが訪れたとき、彼女は次の場所に行きます。

http://url.com/janedoe

彼女は透過的に default.aspx にリダイレクトされ、(上記の URL から) 彼女の名前が取り込まれ、データベースと照合されます。彼女が以前にアクセスしてアカウントを作成したことがわかると、彼女は透過的に login.aspx にリダイレクトされ、前回作成した認証資格情報を入力するように求められます。

4

1 に答える 1

1

まず、リクエストをDefault.aspxに書き直す必要があります。IISのバージョン(以下はIIS 7.5用)に応じて、それは簡単です。web.configでは、(セクションsystem.webServerの)ルールは次のようになります。

<rewrite>
    <rules>
        <rule name="test" enabled="true" stopProcessing="false">
            <match url="^([a-zA-Z]*)$" />
            <action type="Rewrite" url="Default.aspx?u={R:1}" />
        </rule>
    </rules>
</rewrite>

(またはIISマネージャーを使用できます)。もちろん、正規表現[a-zA-Z]は、ビジネスルールに合わせて調整する必要があります。数字を許可することもできます。

これにより、IIS内で要求が書き換えられます。ブラウザーには何も表示されません。ここで、「透過的にリダイレクト」する必要があります。つまり、ユーザーがすでに存在するかどうかに応じて、ブラウザのURLを変更する必要があります。

これを実現するには、Request.QueryString ["u"]を処理する背後にあるDefault.aspxコードで、次のようにします。

Response.Redirect("Welcome.aspx") or
Response.Redirect("Login.aspx")

データベースクエリの結果によって異なります。ブラウザのURLを変更したくない場合は、Response.Redirectの代わりにServer.Transferを使用してください。

于 2012-04-26T07:11:15.527 に答える