web.config 中的会话状态

Kan*_*hka 7 c# asp.net web-config

我正在开发一个有 3 种用户的网络应用程序。

为了避免同一用户多次登录,我在表中使用了登录列,登录后该列将变为 1,注销后将变为 0。如果用户关闭浏览器窗口而不注销,我已使用会话状态来注销用户。

<system.web>       
  <sessionState mode="InProc" timeout="15" cookieName="student"/>
Run Code Online (Sandbox Code Playgroud)

全局.asax:

void Session_End(object sender, EventArgs e) 
{
        int sid = Convert.ToInt32(Session["student"]);
        candidate.signoutUser(sid);
}
Run Code Online (Sandbox Code Playgroud)

但用户分为三类。我无法添加多个sessionState. 有办法解决这个问题吗?

Far*_*ker 4

为什么不将用户类型添加到其会话状态中?

像这样 :

Session["user"] = "Strudent_" + userId;
Run Code Online (Sandbox Code Playgroud)

然后解析您的单个会话以查找 ID 和用户类型:

var userType = Session["user"].ToString().split('_')[0];
var userId = Convert.ToInt32(Sessionp["user"].ToString().split('_')[1];)
Run Code Online (Sandbox Code Playgroud)

但我建议使用会话状态:

  • 1 个用于用户 ID
  • 一个用于用户类型

如果您不想也使用多个会话状态,您还可以使用 userId 从数据库查询用户类型。

  • 不,你的 webconfig 中应该只有一个 sessionState 标签。只需使用一个并从 SessionState 标记中删除 cookieName="student" 即可。 (2认同)