2013-07-09 3 views
1

У меня есть страница, которая, если у вас нет файла cookie, я хочу, чтобы он перенаправлял вас на страницу, созданную cookie. В принципе, если вы не сказали мне, что вы достаточно взрослые, вам нужно перенаправить на страницу и дать мне свой возраст. Короче говоря, если я перенаправляюсь на эту страницу, где я прошу вашего возраста, и конечный пользователь не решает дать мне такой возраст и нажать на ту же страницу или на другую страницу. Мой код добавляется к существующей строке.My ReturnUrl дублирует

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/ 

это как будто оно конкатенируется с существующим. Есть ли способ предотвратить это?

Я в основном хочу иметь его, чтобы у меня было только 1 параметр в моей QueryString ReturnUrl и поэтому он не будет дублироваться, если это уже имеет значение.

+0

Не можете ли вы просто проверить, есть ли часть в URL-адресе? – Master117

ответ

0

Вот код, который исправил проблему. Не знаю, почему мой последний ответ был удален.

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

      if (Request.Cookies["Age"] == null) 
       Response.Redirect("/AgeRestricted/?ReturnUrl=" + url); 
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

+0

Я действительно думал, что это было сразу после некоторого тестирования. Это захватывает URL-адрес перед перенаправлением. Поэтому, если я на главной странице, и я нажимаю на страницу с ограниченным возрастом. Переадресация происходит, и это захватывает URL-адрес домашней страницы. а не страницы с ограничением по возрасту, вызвавшей перенаправление. – jackncoke