在会话开始时启动用户范围类

时间:2010-06-16 00:19:55

标签: c# asp.net asp.net-mvc

我想在用户会话开始时为每个用户启动一个类,以便在整个用户会话中使用单个类。我检查了out this post,但我不确定我应该放置这个Sessionhandler类。在global.asax里面?我该如何完成这项工作?

2 个答案:

答案 0 :(得分:1)

这个类本身可以去任何地方,因为它是静态的,你只需要确保在访问时有正确名称空间的using指令。

如果要创建某个类的实例并将其存储在用户的会话中(可能使用此SessionHandler类),那么您可以在Global.asax.cs中的Session_OnStart()处理程序中执行该操作:

protected void Session_OnStart()
{
    // Do your work here
}

答案 1 :(得分:1)

我认为您将为所有经过身份验证的用户运行一段通用代码(可能是您提到的计时器)。

请查看以下步骤是否解决了您的问题。

<强> 1。在Session_OnStart中有用户初始化代码

如,

protected void Session_OnStart()
{
    // Do user initialization here
    Session["useridentifier"] = id;
    Session["isAuthenticated"] = true;
}

<强> 2。从Controller类派生一个BaseController,这样你开发的所有其他控制器都将继承BaseController(de coupling)

如,

Public class BaseController : Controller
{
}

第3。拥有需要在构造函数中执行的Common方法

如,

Public class BaseController : Controller
{
   public BaseController()
   {
     if((bool.Parse(Session["isAuthenticated"]))
     {
       // write the user specific code here.
     }
  }

希望这有帮助。

谢谢, 维杰