Получить URL предыдущей страницы после Response.Redirect

Я пытаюсь получить URL предыдущей страницы после того, как напишу ответ, и я просмотрел сеть, и люди используютHTTP_REFERER но это не работает с Response.Redirect, так есть ли в любом случае, чтобы получить URL предыдущей страницы?

У меня есть этот код на нескольких страницах, и мне нужно знать, с какой страницы он идет, когда он попадает наservererror/default.aspx страница

 Response.Redirect("servererror/default.aspx?404")

И на моемservererror/default.aspx страница, я просто пытаюсь захватить URL предыдущей страницы и поместить его в сессиюSession("ErrorPage")

Спасибо

Джейми

ОБНОВИТЬ

Теперь у меня есть так работать

Response.Redirect("server-error.aspx?404&" & Request.Url.ToString())

Это передает URL-адрес страницы с ошибкой на следующую страницу, а затем я получаю его из строки запроса

Спасибо

Джейми

 Caspar Kleijne27 сент. 2010 г., 18:17
Обработка ошибок сервера на странице aspx - очень и очень плохая практика, вместо этого используйте страницы htm (l).

Ответы на вопрос(4)

Имейте в виду, что делает Response.Redirect: он выдает 302 «найдено» клиенту. Этот код ответа предназначен для указания того, что искомый контент находится не в том месте, которое вы запрашивали, а в другом месте.

Учитывая эту информацию; тогда страница, которая выдает Response.Redirect, вообще не является «реферером». Вот почему страница, которая ссылалась на эту страницу, все еще указывается как упомянутая.

Как указано выше, вы должны включить в строку URL, которую вы перенаправляете, любую дополнительную информацию, которая вам нужна, например, URL текущей страницы.

Решение Вопроса

Вы можете передать URL предыдущей страницы URL-адресу страницы ошибки. что-то вроде

Response.Redirect("servererror/default.aspx?404&url=/folder/page.aspx")

А затем получите значение URL на странице ошибки и перенаправьте его на предыдущую страницу.

 eglasius27 сент. 2010 г., 18:27
тем более, что HTTP_REFERER может быть заблокирован в браузере (конфиденциальность)
 rauts28 сент. 2010 г., 14:45
Рад, что смог помочь. ура
 jimplode27 сент. 2010 г., 18:03
Это лучшее решение, такой подход применяется большинством сайтов.
 Jamie Taylor28 сент. 2010 г., 13:33
Я адаптировал ваше предложение, чтобы сделать это Response.Redirect ("server-error.aspx? 404 &" & Request.Url.ToString ()), и оно работает, спасибо

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

У меня есть 2 страницы Page1.aspx и Page2.aspx У меня есть Button1 и Button2 на Page1.aspx теперь, каков сценарий, когда я перенаправляю на Page2.aspx, я хочу получить доступ к элементам управления Page1.aspx, который называется Предыдущая страница ... .. Так что я использую PostBackURL кнопки, но в этом случае я не получаю событие Click на CodeBehind ......... так как мне решить эту проблему ............ Что я сделал, так это то, что я установил Button2.PostBackURL = "Page2.aspx", и когда срабатывает событие нажатия кнопки Button1, я регистрирую скрипт запуска, который вызывает событие Button2.click, так что теперь я получаю элементы управления предыдущей страницы .... ......

Вот код ..... если кто-то ищет такую ​​же функциональность ............ ему в каком-то смысле помогут ........

Код aspx

<asp:Button ID="btnSave" runat="server" Style="font-weight: 700" Text="Save" 
    onclick="btnSave_Click" />

Code-Behind

    protected void btnSave_Click(object sender, EventArgs e){
    try
    {
        StringBuilder objStringBuilder = new StringBuilder();
        objStringBuilder.AppendLine("<script type='text/javascript' language='javascript'>");
        objStringBuilder.AppendLine("document.getElementById('" + btnHidden.ClientID + "').click();");
        objStringBuilder.AppendLine("</script>");

        ClientScript.RegisterStartupScript(Page.GetType(),"Key1", objStringBuilder.ToString());
    }
    catch (Exception ex)
    {
        throw ex;
    }}

С уважением,

Вместо этого вы можете попробовать server.transfer, чтобы увидеть, заполняет ли он значение HTTP_REFERER.

 jimplode27 сент. 2010 г., 18:02
Это не заполняет поле реферера, но я полагаю, что это заполнит ClientFilePath, так как это то, что они первоначально запрашивали, и вы затем передали их.

Ваш ответ на вопрос