C# 我的返回URL重复

C# 我的返回URL重复,c#,asp.net,url,redirect,C#,Asp.net,Url,Redirect,我有一个页面,如果你没有我想要的cookie,它会将你重定向到创建cookie的页面。基本上,如果你没有告诉我你已经足够大了,你就要转到一个页面,告诉我你的年龄。长话短说,如果我被重定向到这个页面,我问你年龄,而最终用户没有决定给我年龄,并点击同一页或另一页。我的代码正在添加到现有字符串中 protected void Page_Load(object sender, EventArgs e) { string referrer = Request.UrlR

我有一个页面,如果你没有我想要的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查询字符串中只有1个参数,如果已经有值,它就不会被复制

您可以通过使用
Uri
类仅获取referer的部分,而不获取查询字符串来实现这一点。例如:

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

有关
GetLeftPath
的详细信息,请参阅:

您可以使用
Uri
类仅获取引用者的部分,而不获取查询字符串。例如:

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

有关
GetLeftPath
的更多信息,请参阅:

以下是修复该问题的代码。不知道为什么我的最后一个答案被删除了

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

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

下面是修复该问题的代码。不知道为什么我的最后一个答案被删除了

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

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

你就不能检查一下这个部分是否已经在url中了吗?你就不能检查一下这个部分是否已经在url中了吗?我真的以为这是在经过一些测试之后。这是在重定向之前获取URL。所以如果我在主页上,我点击了一个年龄限制的页面。重定向发生,这将获取主页的url。这不是导致重定向的年龄限制页面。我真的认为这是经过一些测试后的结果。这是在重定向之前获取URL。所以如果我在主页上,我点击了一个年龄限制的页面。重定向发生,这将获取主页的url。不是导致重定向的年龄限制页面。