公共变量范围是针对所有会话,还是每个会话都有其变量副本?

时间:2009-11-01 12:03:17

标签: c# asp.net vb.net .net-3.5

如果我在网页中将变量声明为公共变量,此变量是否可以在不同会话之间保持相同的值,或者每个会话都有自己的副本?

如果是,它在会话之间保持,如何防止这种情况?是否有一个属性来声明一个会话副本?

可能是一个愚蠢的问题?但我对某事感到困惑..

4 个答案:

答案 0 :(得分:4)

该变量仅对单个请求可用,除非您将其存储在会话或缓存中。如果它是公共的,它将可用于请求期间创建的其他对象,但仅限于与请求关联的那些对象。如果你声明它也是静态的,那么它将在应用程序的生命周期中可用 - 但这听起来像你不想要的,所以简单地避免这样做。

答案 1 :(得分:3)

变量范围与会话之间保持的值无关。

公共范围只是意味着应用程序中的任何其他代码都可以看到该变量。

如果您希望能够跨会话存储对象,则需要将其存储在会话中。

答案 2 :(得分:3)

  1. 每个页面都是WebPage类的一个实例,它会在每次请求时被销毁并重新创建。
  2. 会话包对会话是唯一的,不会在不同的会话中共享。它只存储你添加的内容。
  3. 1 + 2 =否。只是向页面添加公共字段不会将其添加到会话中。会话之间不存在相同的值。

    您能告诉我们您面临的确切问题吗?

答案 3 :(得分:0)

在会话之间共享数据的唯一方法是将其存储在数据库或应用程序变量中。