我有一个简单的ASP.Net登录页面。单击登录按钮时,页面应回发,偶数应由我的服务器端事件处理程序处理。相反,页面只是重新加载。 Page.IsPostBack
false
。
我在Master页面,ASPX页面和UserControl(ascx)的Page_Load / Init(适用时)处理程序中放置了断点。当我点击“登录”按钮时,而不是回复帖子并调用我的事件处理程序,我只是将页面加载,就像它是一个新的请求一样。
但这不是它的结束!登录页面采用单个查询字符串参数:Login.aspx?id=123456
。使用此参数时会发生上述故障。但是,如果我启用网址重写以进行查询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;
}
}
ASPX页面上的Page_Load :
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-rewrite方式来访问登录页面,因为许多用户仍在导航到该网址。
P.P.S :即使未启用URL重写,错误仍会发生。
答案 0 :(得分:1)
尝试检查您的缓存政策。可能是您的请求被缓存
答案 1 :(得分:1)
每当我在过去看到这个问题时,通常都会将其归结为网址重写。我通常会找到Fiddler来跟踪HTTP活动。我的预感告诉我,在你点击按钮并看到POST请求后,它将很快被302重定向到登录页面。
您注意到&#34;使用此参数时出现上述故障&#34; login.aspx页面。您确定没有url-rewriter配置,例如,可能会删除任何查询字符串值并进行重定向吗?
答案 2 :(得分:1)
我在IE浏览器上清除了历史记录,问题就消失了。
答案 3 :(得分:0)
您是否尝试使用其他浏览器?一旦我遇到类似的问题,它就通过重新安装Firefox来解决了!