C# 使用会话变量

C# 使用会话变量,c#,asp.net,asp.net-mvc,session-variables,C#,Asp.net,Asp.net Mvc,Session Variables,我对会话变量的定义非常清楚,但我对会话有一个实际问题。 我有一个视图,其中我正在使用viewData,并且该viewData被从会话变量分配一个值。我将此会话变量放置在控制器中。 在我看来 ViewData["MyView"] 内部控制器 if(Session["MySession")!=null) { ViewData["MyView"]=Session["MySession"); } 上述控制器是每个页面的通用控制器。我的意思是,每隔一页,控件就被重定向到上面的控制器。接下来,

我对会话变量的定义非常清楚,但我对会话有一个实际问题。 我有一个视图,其中我正在使用viewData,并且该viewData被从会话变量分配一个值。我将此会话变量放置在控制器中。 在我看来

ViewData["MyView"] 
内部控制器

if(Session["MySession")!=null)
{
   ViewData["MyView"]=Session["MySession");
} 
上述控制器是每个页面的通用控制器。我的意思是,每隔一页,控件就被重定向到上面的控制器。接下来,我还有三个控制器

控制器1 控制器2 控制器3

若我单击第一页的RunReport,控件将转到Controller1并设置一个会话变量

like Session["MySession"]=1;
设置此会话后,控制器转到公共控制器以设置ViewData[MyView],并且每次向该ViewData添加值时都有不同的逻辑

类似地,当我从第二页单击Runreport时,控件转到Controller2并设置一个会话变量

like  Session["MySession"]=1;
设置此会话后,控制器转到公共控制器以设置ViewData[MyView],并且每次向该ViewData添加值时都有不同的逻辑。我的意思是说ViewData每次都有不同的值

类似地,当我从第三页单击时,控件的行为和所有事情都是一样的


现在一切正常。但我的问题是,我在每个不同的控制器中使用相同的会话变量。假设User1打开了page1并单击了runreport页面,当然这个会话变量现在将有一个值,然后这个控件将转到公共控制器并在视图数据中设置一个值。同时,如果另一个用户打开page2并单击runreport,则再次单击时,将遵循此过程,或者即使我是否单击runreport,上一个会话也将具有值。其实我完全糊涂了。请帮帮我。在实践层面上给出一些理解课程的技术要点,请澄清我的观点。非常感谢。

会话是每个用户的集合,即使它在
HttpContext.Current.Session
中看起来是静态的。两个不同的用户将获得不同的
会话
对象,每个新用户将获得自己的空
会话
对象。

关于MVC框架的基础知识,有很多很棒的教程


好的,这意味着每个新用户都将创建一个新的会话变量。现在,假设我是第一个用户,该用户打开page1,然后单击runreport页面,该页面将重定向到controller1,此时将创建一个会话,控件将转到commonController并设置ViewData。现在,会话仍在内存中。然后,我打开page2并单击runreprt按钮,类似地,将创建一个新的会话veriable,或者覆盖第一个会话变量?或者假设我只是打开了第2页,没有点击runreport按钮,那么会话仍然在memcontinued from last comment--内存中?实际上,对这个会话变量有什么影响。请尽快帮助我。我很感激你,因为我看不出你的实际问题。对于会话中的所有页面,您都有一个通用的persistence区域,每次使用密钥名称进行访问时,您都会更改此peristence unit变量的值,以及用户的peristence unit变量的值,并在会话清除后的一段时间内进行更改。