我在哪里存储需要为用户初始化一次的对象,然后需要在所有页面上都可用?

时间:2017-11-23 17:28:49

标签: c# asp.net session

我有一个包含与外部服务的连接的对象。当用户登录时,需要初始化连接,否则在重新初始化连接时服务将抛出错误。

然后,连接需要始终打开,并且应该可供多个将调用该服务的控制器使用。

我正在使用ASP MVC& C#。我目前正在初始化用户会话启动时的变量,并将其存储在用户会话中。我想知道这种方法是否有其他替代方案。

初始化会话变量

protected void Session_Start(object sender, EventArgs e)
{
    HttpContext.Current.Session.Add("SomeConnection", new SomeConnection());
}

然后我使用一个从会话中检索连接的扩展方法

public static SomeConnection GetSomeConnection(this HttpSessionStateBase session)
{
    return (SomeConnection) HttpContext.Current.Session["SomeConnection"];
}

1 个答案:

答案 0 :(得分:0)

另一种方法是: 如果要在负载平衡的服务器上进行部署,要使此方法起作用,您必须确保会话粘性。

否则,您可以使用AppFabric将对象存储在独立服务器中,并使其可供所有服务器使用。这样你也只需要初始化一次对象。

使用GetExistingOrSet方法。