会话/重定向到页面的ASP.NET问题

时间:2011-06-21 12:49:04

标签: asp.net session redirect

您好,我在Session中存储用户名有问题。在登录页面上,我将用户名存储到会话中。登录页面上的用户输入凭据,然后在默认页面上重定向。我需要在类中默认访问会话中的变量存储。

Logon.aspx

<script runat="server">
    void Login_Click(object sender, EventArgs e)
    {
                 Session["user"]  = tbUserName.Text;

                //You can redirect now.
                Response.Redirect(FormsAuthentication.GetRedirectUrl(tbUserName.Text, 
false));
}
</script>

secod主页在这里:

的Default.aspx-Default.aspx.cs

public partial class Default : Page, 
    IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{
      string userName = (string) (Session["user"]);
}

但结果是userName为空。

Web配置在这里:

<sessionState cookieless="true" regenerateExpiredSessionId="true" />

感谢您的建议。

3 个答案:

答案 0 :(得分:1)

为什么不直接从HttpContext HttpContext.Current.User.Identity.Name

获取它

修改:我想你试图在页面级而不是page_load或其他地方获取它。这就是你没有获得会话价值的原因。

我希望下面的内容对您有用

 protected void Page_Load(object sender, EventArgs e)
 {
     string userName = (string) (Session["user"]);
 }

答案 1 :(得分:1)

如果代码段位于模块级别(由评论中的Bala R提及),则可能尚未设置会话状态。尝试在页面生命周期的一部分方法中获取它(如page_load等)。

答案 2 :(得分:0)

更新:这是不正确的。

重定向时,您正在丢失(无cookie)会话。无Cookie会话在URL中维护,并在您明确重定向时丢失,因此第二页上的会话中没有任何内容。