Asp.net会话变量

Ama*_*nth 13 c# asp.net session-variables

我有一个带有c#代码的asp.net项目.我有一个名为GlobalVariable的静态类,我存储了一些信息,例如当前选择的产品.

但是,我看到当有两个用户使用该网站时,如果有人更改了所选产品,则会为每个人更改.静态变量似乎与每个人都是共同的.

我想创建(来自c#代码)某种会话变量,它只使用c#代码,但不仅来自页面,而且来自任何类.

dri*_*iis 28

是静态变量由整个应用程序共享,它们绝不是用户/会话私有的.

要从非页面类访问Session对象,您应该使用HttpContext.Current.Session.

  • @Mathieu请记住检查null,因为并不总是为每个请求创建Session.例如,默认情况下不会设置简单的处理程序(如.ashx文件)来创建Session对象. (3认同)

Yuc*_*uck 9

GlobalVariable是一个误导性的名字.无论它叫什么,它都不应该是static每个会话.你可以这样做:

// store the selected product
this.Session["CurrentProductId"] = productId;
Run Code Online (Sandbox Code Playgroud)

您不应该尝试使 Session集合全局可访问.相反,只传递您需要的数据并Session在适当的时候使用/获取/设置.

以下是在MSDN 上使用ASP .NET中的会话存储的概述.


Kha*_*han 8

你回答了自己的问题.答案是会话变量.在GlobalVariable类中,您可以放置​​由会话变量支持的属性.

例:

public string SelectedProductName 
{
    get { return (string)Session["SelectedProductName"]; }
    set { Session["SelectedProductName"] = value; }
}
Run Code Online (Sandbox Code Playgroud)