Response.Redirect перенаправляет на страницу, которая не существует - PullRequest
0 голосов
/ 14 февраля 2012

Я делаю простую проверку некоторых пользовательских данных, которые вводятся в сеанс при входе в систему. Что происходит, я нажимаю несколько кнопок, чтобы перейти на эту страницу.На этой странице есть раскрывающийся список, который установлен на autopostback=true.

Когда я меняю свой выбор в раскрывающемся списке, мой запрос перенаправляется на несуществующую страницу.signin.aspx существует в корневой папке сайта.Попытка перенаправления ищет вход в папку, в которой находится данная страница (example.com/folder1/signin.aspx), а не example.com/signin.aspx.

Должен ли я использовать что-то отличное от Response.Redirect для достижения этой цели?

Дополнительное примечание о приложении:

Это .net 4, использующий jquery 1.6.4 и jquerymobile 1.0.Я думаю, что проблема в jquery mobile, потому что я использую этот же шаблон / практику в других приложениях без проблем.

Местоположение страницы, где это происходит.example.com/folder1/page2.aspx

расположение входа на странице: example.com/signin.aspx

url, который отображается в сообщении об ошибке.example.com/folder1/signin.aspx

protected override void OnInit(EventArgs e)
{

    if (Session["UserData"] == null)
    {
        Response.Redirect("../SignIn.aspx");
    }

}

Ответы [ 3 ]

3 голосов
/ 14 февраля 2012

Вы всегда должны использовать корневые пути в стиле asp.net:

Response.Redirect("~/SignIn.aspx");

Это делает URL относительно корня вашего сайта (не веб-корня, если ваш сайт не является корневым веб-сайтом), но все же позволяет перемещать сайт.

1 голос
/ 14 февраля 2012

Попробуйте

protected override void OnInit(EventArgs e)
{


    if (Session["UserData"] == null)
    {
        Response.Redirect("~/SignIn.aspx");
    }

}
1 голос
/ 14 февраля 2012

jquery не будет влиять на response.redirect на стороне сервера. Вы уверены, что страница существует так, как она установлена ​​в вашем коде? Если signin.aspx находится в корне сайта, не могли бы вы просто сделать это?

Response.Redirect("/SignIn.aspx");
...