Получить 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-адрес страницы с ошибкой на следующую страницу, а затем я получаю его из строки запроса

Спасибо

Джейми

4 ответа

Решение

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

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

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

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

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

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

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

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

У меня есть 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;
    }}

С уважением,

Другие вопросы по тегам