Страница ASP.Net не отправляет назад - перезагружается - PullRequest
2 голосов
/ 16 января 2012

У меня есть простая страница входа в ASP.Net. При нажатии кнопки входа в систему страница должна отправляться обратно, а обработчик событий должен обрабатываться моим сервером. Вместо этого страница просто перезагружается. Page.IsPostBack равно false.

Я установил точки останова в обработчиках Page_Load / Init (где это применимо) главной страницы, страницы ASPX и UserControl (ascx). Когда я нажимаю кнопку «Вход», вместо того, чтобы вернуть сообщение и вызвать обработчик события, я просто загружаю страницу, как будто это новый запрос.

Но это еще не конец! Страница входа принимает один параметр строки запроса: Login.aspx?id=123456. Вышеуказанная ошибка возникает при использовании этого параметра. Однако если я включу перезапись URL , чтобы сделать запрос Login/123456, ошибка не произойдет; Я получаю сообщение назад, и в этом случае вызывается мой обработчик событий.

Так почему я не получаю ожидаемого поведения со своей страницы? Что из-за переписанного URL заставляет проблему исчезнуть?

Кнопка входа объявлена ​​в LoginUserControl.ascx:

<asp:Button ID="SubmitLinkButton" runat="server" Text='Log In' OnClick="SubmitLinkButton_Click"></asp:Button>

И обработчик в коде позади:

protected void SubmitLinkButton_Click(object sender, EventArgs e)
{
    Authenticate();
}

SubmitLinkButton_Click никогда не вызывается. (

Редактировать (больше кода):

//Page_Init on the Master page
protected void Page_Init(object sender, EventArgs e)
{

    if (HttpContext.Current.User.Identity.IsAuthenticated) 
    {
        try
        {

            if (SessionFacade.User != null)
            {
                loginlabel.Text = "Logged in |";
                LoginLink.Visible = true;
            }
        }
        catch
        {
            FormsAuthentication.SignOut();
            CacheFacade.RemoveSessionValues();
            Session.Abandon();
            Session.RemoveAll();
            HttpContext.Current.Response.Redirect("~/Login.aspx");
        }
    }
    else
    {
        loginlabel.Text = "";
        LoginLink.Visible = false;
    }
}

Page_Load на странице ASPX:

protected void Page_Load(object sender, EventArgs e)
{
    if (this.IsPostBack.Equals(false))
    {
        /* Some business stuff that boils down to this: */
        Session["company"] = Request["company"];
    }
}

Page_Load в элементе управления входом:

protected void Page_Load(object sender, EventArgs e)
{

    if (!Page.IsPostBack)
    {
        //honestly, there's no code here
    }

}

P.S : Мне нужно сохранить доступ к странице входа без перезаписи, поскольку многие пользователи все еще переходят по этому URL.

P.P.S : Даже если перезапись URL не включена, ошибка все равно возникает.

Ответы [ 4 ]

1 голос
/ 29 августа 2012

Я очистил историю в своем браузере IE, и проблема исчезла.

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

Попробуйте проверить свою политику кэширования.Возможно, ваш запрос кешируется

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

Всякий раз, когда я сталкивался с этой проблемой в прошлом, ее обычно связывали с переписыванием URL. Я бы обычно достигал Fiddler для отслеживания активности HTTP. После того, как вы нажмете кнопку и увидите POST-запрос, мне подсказывает, что за ним быстро последует перенаправление 302. На страницу входа в систему.

Вы заметили, что «Приведенный выше сбой происходит при использовании этого параметра» на странице login.aspx. Вы уверены, что не существует конфигурации перезаписывающего URL, которая, например, может удалить любые значения строки запроса и выполнить перенаправление?

0 голосов
/ 22 января 2012

Вы пытались использовать другой браузер? Однажды у меня возникла похожая проблема, и она была решена путем переустановки Firefox!

...