ASP.NET WebApi 会话 vs 静态变量

9
在托管在IIS 7中的ASP.NET WebApi中,它是否可以访问会话?似乎HttpContext.Current上的Session为空。
用于存储全局变量的这两种方法有什么区别?
private static Dictionary<string, string> ConnectionStrings
    {
        get
        {
            if (HttpContext.Current.Session["ConnectionStrings"] == null)
                HttpContext.Current.Session["ConnectionStrings"] = new Dictionary<string, string>();

            return HttpContext.Current.Session["ConnectionStrings"] as Dictionary<string, string>;
        }
    }

并且

private static Dictionary<string, string> connectionStrings = new Dictionary<string, string>();

我应该使用会话(session)还是静态(static)变量来存储动态生成的连接字符串(长话短说)?
1个回答

7

好的,一个会话变量是针对每个用户而言的。静态变量是一个将被所有用户共享的变量。因此,我不知道为什么会为每个用户存储一个连接字符串,但如果您需要这样做,就不能使用一个静态变量。现在,您可以使用一个静态变量,并将其构造成一个字典,其中键是用户,值是您想要存储的任何内容。那肯定能够工作。

话虽如此,您可以使用 cookie 来模仿会话(通常是会话实际使用的东西):请参见:使用 ASP.NET Web API 访问会话


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接