У меня есть простая страница входа в 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 не включена, ошибка все равно возникает.