2012-11-20 3 views
2

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

Например, при успешном входе в систему с этой страницы:

http://whatever/Login.aspx?ReturnUrl=%2fAdmin%2fmenu-link.aspx 

я получаю следующее:

Context.Request.QueryString["ReturnUrl"] = null 
Context.Request.Params["ReturnUrl"] = null 
Context.Request.Url.ToString() = "http://localhost/Login.aspx" 
UrlReferrer = "http://localhost/Login.aspx?ReturnUrl=/Admin/menu-link.aspx" 

Почему это происходит?

Спасибо за ответы, но я не использую состояние сеанса на этом конкретном веб-сайте, поэтому это не вариант для меня. В первый раз, когда пользователь перенаправляется на страницу входа в систему (после доступа к странице с ограничениями), я могу правильно видеть строку запроса в page_load, однако она теряется при обратной передаче.

Вот мой код страницы, я не знаю, почему она не сохраняющееся:

<body> 
    <form id="form1" action="Login.aspx" runat="server" defaultbutton="btnLogin"> 
    //Bunch of html 
    <asp:Button TabIndex="5" CausesValidation="true" runat="server" ID="btnLogin" Text="Log In" onclick="btnLogin_Click" /></div> 
    </div> 
    </form> 
</body> 
+0

Где на жизненном цикле вы читаете 'QueryString'? Глядя на свой полный URL-адрес в качестве реферера, я бы предложил вам прочитать его на странице после входа в систему? – RemarkLima

+0

Я читаю его в событии кнопки на странице входа. На той же странице я не знаю, почему это происходит. – TheGateKeeper

ответ

1

Я читаю это в случае кнопки на странице входа. Он находится на той же странице я не знаю, почему это происходит

Ваш form не сохраняя querystring когда кнопка Войти представляется, как таковой, он появляется в UrlReferrer.

Сохраните запрос с переменной сеанса или добавьте строку запроса в атрибут formaction.

+0

Я получил его для работы, просто удалив атрибут 'action' из формы. Asp.net автоматически вставил правильный во время выполнения. – TheGateKeeper

2

Если бы я был прав, вы пытались получить ReturnUrl после того, как вы вошли в систему? Попробуйте следующее в своем button_click. Он должен просто работать. Ваш реферер показывает, как вы сделали еще один запрос выбился из строки запроса часть без захвата его

string ReturnUrl = Request.QueryString["ReturnUrl"]; 
Response.Redirect(ReturnUrl); 

Если вы заботитесь, показать код в ваш button_click

+0

Я получаю его после входа в систему, правильно, но я все еще на той же странице. Состояние сеансов не может быть и речи, см. Мое редактирование выше. – TheGateKeeper

+0

Вы должны получить его, прежде чем произойдет обратная передача. Если вы отправляете назад на ту же страницу, строка запроса будет идти, если вы не захватите ее и не добавите снова. – codingbiz

2

Получить строку запроса параметра на Page_Load событие & сохранить его в

ViewState["ReturnUrl"] = Request.QueryString["ReturnUrl"]; 

Затем, в случае щелчка кнопки сделать переадресацию аутентификации:

Response.Redirect(ViewState["ReturnUrl"].ToString()); 
Смежные вопросы