我有一个包含与外部服务的连接的对象。当用户登录时,需要初始化连接,否则在重新初始化连接时服务将抛出错误。
然后,连接需要始终打开,并且应该可供多个将调用该服务的控制器使用。
我正在使用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"];
}
答案 0 :(得分:0)
另一种方法是: 如果要在负载平衡的服务器上进行部署,要使此方法起作用,您必须确保会话粘性。
否则,您可以使用AppFabric将对象存储在独立服务器中,并使其可供所有服务器使用。这样你也只需要初始化一次对象。
使用GetExistingOrSet
方法。