我有一个asp.net项目后面的c#代码。我有一个名为GlobalVariable的静态类,用于存储一些信息,例如当前选定的产品。Asp.net会话变量
但是,我看到当有两个用户使用该网站时,如果更改了所选产品,如果更改为每个人。静态变量似乎对大家都是共同的。
我想创建(从C#代码)某种类型的会话变量仅用于C#代码,但不仅仅是从页面,而是从任何类。
我有一个asp.net项目后面的c#代码。我有一个名为GlobalVariable的静态类,用于存储一些信息,例如当前选定的产品。Asp.net会话变量
但是,我看到当有两个用户使用该网站时,如果更改了所选产品,如果更改为每个人。静态变量似乎对大家都是共同的。
我想创建(从C#代码)某种类型的会话变量仅用于C#代码,但不仅仅是从页面,而是从任何类。
是的静态变量是由整个应用程序共享的,它们决不是用户/会话专用的。
要从非页面类访问Session对象,应该使用HttpContext.Current.Session
。
GlobalVariable
是一个误导性的名字。不管它叫什么,如果每个会话都不应该是static
。你可以做这样的事情,而不是:
// store the selected product
this.Session["CurrentProductId"] = productId;
你不应该试图让Session
收集全局访问无论是。相反,只需传递您需要的数据,并在适当情况下使用Session
进行设置。
以下是在MSDN上使用session storage in ASP .NET的概述。
谢谢你提供了一个如何使用Session的例子。 – Ernest 2014-01-15 20:22:50
你有点回答你自己的问题。答案在会话变量中。在您的GlobalVariable类中,可以放置由会话变量支持的属性。
例子:
public string SelectedProductName
{
get { return (string)Session["SelectedProductName"]; }
set { Session["SelectedProductName"] = value; }
}
静态变量是在整个应用程序进行访问。会话用于在用户登录和注销内存储和访问变量。使用数据库让您的变量超出您的会话和应用程序。要在多个应用程序之间共享数据,请使用分布式缓存并将[ASP.NET会话](http://www.alachisoft.com/ncache/session-index.html)存储在缓存中。 – 2015-12-21 07:52:55