2011-02-10 5 views
2

Я пытаюсь использовать Response.Redirect на странице ASP.NET, которая использует маршрутизацию и членство - для перенаправления не зарегистрированных пользователей на главную страницу. Это страница, которая иногда должна быть доступна для анонимных пользователей на основе контента. Когда я перенаправляюсь на страницу входа в систему, браузер заполняет returnurl недопустимым контентом.Response.Redirect ReturnUrl

Вопрос в том, как удалить ReturnURL перед отправкой пользователя «выключено»? Или как я могу исправить это, чтобы он включал правильную ссылку?

Страница находится в другом каталоге. Он перенаправляет правильно, но возвращает ReturnURL к недопустимому пути.

ReturnUrl только что установлен в папку. Не на страницу с параметрами запроса и маршрутом.

UPDATE

Хорошо, где то, что он делает

У меня есть папка действия. Я перенаправляюсь на Login.aspx. Он перенаправляет на login.aspx, но затем устанавливает returnurl в Actions/Login.aspx, что является абсолютно неправильным.

Это неправильно на 2 счета:

  1. существует doens't в действиях login.aspx папки
  2. Это создает рекурсивный редирект

Update Fixed Частично

Хорошо, это потому, что я был в другой папке и не перенаправлялся на нужную страницу.

У меня был «login.aspx» вместо «../login.aspx»

Однако, не устанавливая ReturnUrl на разгромленной пути. Он лишает возвращ. Возможно, я решил сделать это как дизайнерское решение, но не на 100% уверен.

+0

Что такое содержание недействительно? Как вы реализуете перенаправление? Является ли маршрут перенаправлением на OK с правилами маршрутизации? И, конечно, ** в чем ваш вопрос **? – Oded

+0

@oded обновлено с дополнительной информацией –

+0

Можете ли вы разместить соответствующий код? – Oded

ответ

2

Я не понял ничтожество проблемы, с которой вы столкнулись, но я думаю, вы, возможно, пропустили применение Server.UrlEncode, чтобы вернуть url. Пожалуйста, обратите внимание на то, что Server.UrlEncode делает на

http://msdn.microsoft.com/en-us/library/ms525738(v=vs.90).aspx

Ниже приведен фрагмент кода, который показывает, как уточнить возвратного URL с помощью Server.UrlEncode

Response.Redirect(FormsAuthentication.LoginUrl + "?ReturnUrl=" + 
Server.UrlEncode(Request.Url.ToString())) 
Смежные вопросы