重定向到另一个页面时,Session始终为null? C#

时间:2017-06-01 06:06:59

标签: c# asp.net session

我尝试添加会话,然后我在重定向后访问另一个页面,这总是显示为空

Session.Add("pUser_Name", ds_1.Tables[0].Rows[0]["User_Name"].ToString());
HttpContext.Current.ApplicationInstance.CompleteRequest();
Response.Redirect("DashBoard.aspx", false);

这是我正在访问的另一个页面

protected void Page_Load(object sender, EventArgs e)
{
     if (Session["pUser_Name"] == null)  ////here is error NULL
     {

         Response.Redirect("Admin.aspx");
     }
 }

我试过

protected override void OnInit(EventArgs e)
{
    if (Session["pUser_Name"] == null)
    {
        Response.Redirect("Admin.aspx");
    }
    base.OnInit(e);
}

以及

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DashBoard.aspx.cs" Inherits="SC.DashBoard" EnableTheming="true"
Theme="Theme1" EnableSessionState="True" %>

和管理页面,为会话分配值

 <%@ Page Language="C#" AutoEventWireup="true" EnableSessionState="True" CodeBehind="Admin.aspx.cs" Inherits="SC.Admin" %>

和web.config文件

<system.web>
   <compilation debug="true" targetFramework="4.0"/>
   <sessionState timeout="12000"/>
</system.web>

但仍然面临同样的会话

1 个答案:

答案 0 :(得分:0)

根据此answer基本上引用此msdn article关于http://onlinehelp.tableau.com/current/server/en-us/adminview_bucket.htm,您可能需要在 Session_Start 上初始化您的会话对象:

SessionID

当会话状态存储在您当前基于web.config使用的cookie中时,这是必需的。原因是ASP.NET在第一次使用之前不会保存会话,因此当您protected void Session_Start(Object sender, EventArgs e) { Session["init"] = 0; } 到另一个页面时,每个页面请求都会生成一个新的SessionID。