【问题标题】:ASP.NET problem with session / redirect to page会话/重定向到页面的 ASP.NET 问题
【发布时间】:2011-06-21 12:49:03
【问题描述】:

您好,我在 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>

第二个主页在这里:

Default.aspx-Default.aspx.cs

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

但结果是 userName 为空。

网络配置在这里:

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

谢谢你的建议。

【问题讨论】:

  • 第二页,是Page_Load中的sn-p吗?
  • 您应该发布完整的代码来找出问题所在?

标签: asp.net session redirect


【解决方案1】:

如果 sn-p 在模块级别(正如 Bala R 在 cmets 中提到的),会话状态可能尚未设置。尝试通过属于页面生命周期一部分的方法(如 page_load 等)获取它。

【讨论】:

    【解决方案2】:

    为什么不直接从HttpContextHttpContext.Current.User.Identity.Name获取呢

    编辑:我猜你是想在页面级别而不是在page_load 或其他地方获取它。这就是您没有获得会话值的原因。

    希望以下内容对你有用

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

    【讨论】:

      【解决方案3】:

      更新:这是不正确的。

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

      【讨论】:

      • 根据 Microsoft 文档,除非重定向 URL 是绝对路径,否则会维护无 cookie 会话,因此相对路径应该安全地保持会话完整。这意味着它将取决于重定向目的地。
      猜你喜欢
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多