会话变量和主页

时间:2012-01-03 22:46:05

标签: c# asp.net session master-pages

我想在我的网站上记录用户会话。我希望只设置一个会话变量。但它的初始化给了我一些问题。

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["SESSION_GUID"] == null)
    {
        Session["SESSION_GUID"] = Guid.NewGuid().ToString();
        Response.Redirect(Request.Url.ToString(), true);
        return;
    }
    lnkUpload.Visible =  (Session["LOGGED_IN"] != null);
    btnLogout.Visible = (lnkUpload.Visible);
}

似乎母版页正在创建变量OK,但其余页面加载(使用该母版页的页面)。所以在我的日志中,我看到两个点击。一个没有设置会话ID,第二个匹配会话ID。

知道为什么这个母版页的子页面加载了两次?这仅发生在对站点的第一个请求上。在那之后,会话工作正常,我们只得到一次。

2 个答案:

答案 0 :(得分:3)

内容页面的Page_Load事件将在主页的Page_Load之前调用,如ASP.NET Page Lifecycle

中的步骤6-7所示

主页Page_Init事件在内容页面Page_Init事件之前被调用,所以如果你正在做的就是检查Session,最好在Page_Init处理它主页面和重定向。这可能会导致问题基于项目中其他代码的外观,但从概念上讲,您要做的第一件事就是检查Session并正确处理,因此在处理重定向之前不需要加载页面/控件。

答案 1 :(得分:0)

尝试在母版页中执行Response.End()。这将停止渲染剩余的标记。