1

必要な Cookie がない場合、Cookie が作成されたページにリダイレクトするページがあります。基本的に、あなたが十分な年齢であることを私に言わなかった場合は、ページにリダイレクトして年齢を教えてください. 簡単に言えば、私が年齢を尋ねているこのページにリダイレクトされ、エンドユーザーが私に年齢を与えることを決定せず、同じページまたは別のページをクリックした場合です。私のコードは既存の文字列に追加しています。

protected void Page_Load(object sender, EventArgs e)
    {       
        string referrer = Request.UrlReferrer.ToString();

            if (Request.Cookies["Age"] == null)
                Response.Redirect("/AgeRestricted/?ReturnUrl=" + referrer);


    }

このページを呼び出して何度も読み込むと、URL が非常に見苦しくなります。

http://localhost:14028/AgeRestricted/?ReturnUrl=http://localhost:14028/AgeRestricted/?ReturnUrl=http://localhost:14028/

既存のものに連結しているようなものです。これを防ぐ方法はありますか?

私は基本的に、ReturnUrl QueryString に 1 つのパラメーターしかなく、既に値がある場合は重複しないようにしたいと考えています。

4

2 に答える 2

1

Uriクラスを使用して、クエリ文字列なしでリファラーの部分のみを取得することで、これを行うことができます。例えば:

if (Request.Cookies["Age"] == null)
{
    string referrer = Request.UrlReferrer.GetLeftPart(UriPartial.Path);
    Response.Redirect(referrer);
}

の詳細についてはGetLeftPath、http: //msdn.microsoft.com/en-us/library/system.uri.getleftpart.aspxを参照してください。

于 2013-07-10T01:00:41.133 に答える
0

これが問題を修正したコードです。私の最後の回答が削除された理由がわかりません。

 string url = HttpContext.Current.Request.Url.AbsoluteUri;

            if (Request.Cookies["Age"] == null)
                Response.Redirect("/AgeRestricted/?ReturnUrl=" + url);
于 2013-07-11T15:43:06.440 に答える