【问题标题】:Working with Session Variables使用会话变量
【发布时间】:2013-09-08 04:30:08
【问题描述】:

我很清楚会话变量的定义。但是我对会话有一个实际问题。 我有一个使用 viewData 的视图,并且这个 viewdata 被分配了一个来自会话变量的值。我将此会话变量放置在控制器中。 在我看来

ViewData["MyView"] 

在控制器中

if(Session["MySession")!=null)
{
   ViewData["MyView"]=Session["MySession");
} 

上面的控制器是每个页面的通用控制器。我的意思是从所有其他页面,控件被重定向到上面的控制器。所以,在这之后,我还有另外三个控制器

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

如果我从第一页点击 RunReport,控件会转到 Controller1 并设置会话变量

like Session["MySession"]=1;

设置完这个Session后,controller去common controller设置ViewData[MyView],每次给这个viewdata加值都有不同的逻辑。

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

like  Session["MySession"]=1;

设置完这个 Session 后,控制器去普通控制器设置 ViewData[MyView] 并且每次给这个 viewdata 加值都有不同的逻辑。我的意思是说 ViewData 每次都会有不同的值。

类似地,当我从第三页单击时,控件的行为方式和所有内容都相同。

目前一切正常。但我的问题是我在每个不同的控制器中使用相同的会话变量。假设 User1 已经打开 page1 并且他点击了 runreport page ,当然这个会话变量现在会有一个值,之后这个控件将转到 Common 控制器并在视图数据中设置一个值。同时,如果另一个用户打开 page2 并且他单击 runreport ,那么在再次单击时,将遵循此过程,或者即使我单击 runreport 上一个会话已经具有值。其实我完全糊涂了。请帮我。在实际水平上给出一些技术上的深入理解课程,请澄清我的观点。非常感谢。

【问题讨论】:

    标签: c# asp.net asp.net-mvc session-variables


    【解决方案1】:

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

    【讨论】:

    • 好的,这意味着每个新用户都会创建一个新的会话变量。现在假设我是第一个用户,该用户打开 page1,然后单击 runreport 页面,该页面将重定向到 controller1,创建一个会话,控制将转到 commonController 并设置 ViewData。现在,会话仍在内存中。然后,我打开 page2 并单击 runreprt 按钮,类似地,将创建一个新的 Session veriable 还是将覆盖第一个 session 变量?或者假设如果我只是打开 page2 而没有点击 runreport 按钮,那么会话仍将在内存中
    • 接上一条评论--- 内存?实际上会对这个会话变量产生什么影响。请尽快帮助我。我会感谢你的
    • 我看不到您的实际问题。您的 Session 的所有页面都有一个共同的持久性区域,每次您使用键名访问时,您都会更改此持久性单元变量的值以及用户的值以及在 Session 被清除后的一段时间内。跨度>
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多