您好,我在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" />
感谢您的建议。
答案 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中维护,并在您明确重定向时丢失,因此第二页上的会话中没有任何内容。