ASP.Net 页面未回发 - 而是重新加载

标签 asp.net url-rewriting postback

我有一个简单的 ASP.Net 登录页面。单击登录按钮时,页面应该回发,并且事件应该由我的服务器端事件处理程序处理。相反,页面只是重新加载。 Page.IsPostBackfalse

我已在 Master 页、ASPX 页和 UserControl (ascx) 的 Page_Load/Init(如果适用)处理程序中放置了断点。当我点击“登录”按钮时,我只是像新请求一样加载页面,而不是返回帖子并调用事件处理程序。

但这还没有结束!登录页面采用单个查询字符串参数: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();
}

SubmitLinkBut​​ton_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 重写方式,因为许多用户仍在导航到该 URL。

P.P.S:即使不启用 URL 重写,错误仍然会发生。

最佳答案

过去每当我看到这个问题时,通常都会将其归因于 URL 重写。我通常会调用 Fiddler跟踪 HTTP 事件。我的直觉告诉我,在您单击按钮并看到 POST 请求后,很快就会出现 302 重定向到登录页面的情况。

您在login.aspx页面中注意到“使用该参数时出现上述故障”。您确定没有 url 重写器配置,例如,可能会删除任何查询字符串值并执行重定向?

关于ASP.Net 页面未回发 - 而是重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876066/

相关文章:

asp.net - 如何在asp.net中的数字之间插入斜线?

c# - 在 ASP.NET 中使用 Windows 身份验证

asp.net - 检测所有 HTML 页面渲染何时发生

asp.net - 将查询字符串附加到 IIS 重写映射

jquery Accordion 在 asp.Net 回发后不会重新启动

javascript - 将 AutoPostBack ="true"添加到 DropDownList 并单击项目时,它会将我发送到页面 "Resource could not be found"

asp.net - Release模式下 swagger 文件出现问题

tomcat - 每个页面的多个有状态 iframe 将覆盖 JSESSIONID?

php - 是否有处理 URL 参数添加、删除或替换的 PHP 库?

重复单击时asp.net按钮不会导致回发