我也觉得不能,你的静态变量是写到web.config中吗?如果是写在.cs中,应该不会起作用吧

解决方案 »

  1.   

    simanh()
       写在哪里都会一样起到作用,因为它就是一个类里面的一个静态变量而已。但是好像写在Global.asax里面就可以,不过我不确定。
      

  2.   

    同意 v192(魔渡众生):
    所谓类级变量,就是类级的,可以用类名直接访问,该类的所有对象公用该变量。所以vb.net中用shared标示,十分合理!所以静态变量与"服务器群集"没有任何关系,只要能访问含该静态变量的类,就可以访问该静态变量,且值是一样的。 与该类在哪里没有关系。
      

  3.   

    看看这个
    http://www.chinabs.net/aspnet/default.asp?infoid=99
      

  4.   

    lxcc(虫子) 你介绍的是什么方法啊,不考虑多用户条件?
      

  5.   

    chnama(chnama) 
           一般来说,静态变量能够代替Application的作用(详情请参阅《Asp.Net高级编程》),但是该书没有说明群集的时候会是什么样的结果。因为一般的静态变量,不像Application做过一些处理,所以在物理地址都不同的时候,我就不知道静态变量的值还一不一样了。或者放到Global.asax里面可以?
      

  6.   

    v192(魔渡众生) :我现在搞不清楚的就是静态变量对于多用户来说是否透明的,即每个连接到服务器的会话都有自己的一套静态变量,个人认为不是的,静态变量应该是所有用户共享的,那样的话lxcc(虫子)帖的方法就有问题
      

  7.   

    应该不是每个用户都有自己的一套静态变量。那就变成Session了。这个是可以确定的,因为那本书上明确说,静态变量很多时候使用起来比Application效率高的,因为少了Lock和UnLock
      

  8.   

    agree with 91619600(工藤·新一):
    不过应该把“而且始终保持第一次的赋值” 改为 “....最后一次的赋值....”
      

  9.   

    明确告诉你 static 和 Application是绝对不一样的; 作用域级别是不同的; Application要远远大于 static;static不可能代替 Application;
      

  10.   

    只要在本类操作.是可以的.但静态变量和Application在什么情况下使用大家都很明白.前者是用于维持应用于整个类的信息.后者则是在各个页面之间的信息传递.用对地方.那还有什么不可理解的吗?
      

  11.   

    你的意思是用static不能在页面之间传递信息?
      

  12.   

    szwebnet(赤水流星) 
          好像不全对哦,静态变量也可以在页面间信息传递啊,他的作用域是整个应用程序。
    难道我理解有错?《ASP.Net高级编程》P531:静态变量。除了Application或者Cache在我们
    应用程序中共享数据外,我们也可以使用ASP.NET中的面向对象工具:静态变量。我们可以声明静态变量,无论我们创建了多少个类实例,都只能创建一份该变量的副本。静态变量在整个应用程序都可以访问,而且在某些情况下比Application更为有效。有兴趣的朋友可以去找来看看,这本书应该多数人都看不过吧?
      

  13.   

    to zzzl(情感真理) :
        传递是肯定可以的,我已经试验过了。但是我没条件去做多个服务器群集的时候,他们值是否也能保证相同。不知道是否理解有错:Application应该是Web开发方式提供的方法,而静态变量应该是面向对象语言提供的解决方法。
      

  14.   

    to hzgood()   不要太经验主义
      

  15.   

    to szwebnet(赤水流星)
        我现在只是想知道这两者之间具体区别在于什么,而且想知道群集的时候是否可用。如果没有区别的话,其实Application的效率不如静态变量高。因为他是对象,还要Lock和UnLock。
      

  16.   

    而你说的那句话的意思是说,静态变量比Application更高级?更有效?那为什么不用?
      

  17.   

    应该不可以的。
    应该只对一个session有作用吧?
      

  18.   

    to v192(魔渡众生)
    杀鸡刀和宰牛刀没有高低之分,只说用了用对地方就行了.用不对地方反而会显得不伦不类.
    我想MS让我们用静态和Application,目的再好区分不过了.
    你觉得静态变量比Application更高级?更有效?那是在应用本类数据维持的时候.
    而Application等会话状态的目的也很明显.用拿个.要酌情而定!
      

  19.   

    用static传递值
    第一个用户赋值1
    第二个用户赋值2
    第一个用户在目标页面读取static
    第二个用户在目标页面读取static两个用户读取的static为多少?
      

  20.   

    先想想.一个客户,服务器端是不是只会产生唯一一个处理进程?各客户的进程不会相互干扰吧?
    那好.排除多客户.不去说他.那再说一个客户指向的是群集服务器中的唯一一个服务进程,别的服务器进程不会来相互干扰吧?
    那还是一个说法:如果说群集服务器会打乱static变量的值,那非群集服务器更应该是会被打乱数据的.当然,这是不可能的!静态变量的值当然只对一个客户端统一!
      

  21.   

    要注意的是.每个客户端的操作,在服务器上的static变量数据是反映在服务器中不同内存段中的.各个客户数据不相互干扰.而各个客户端的操作只都会在服务器端产生各自独立的进程.要不就乱套了.只有固定存储设备的内容是可以让各客户端相互修改的!
      

  22.   

    干脆不要用asp提供的方法了,也不要用什么static了,直接把数据暂存到数据库上得了
      

  23.   

    szwebnet(赤水流星)如果是static,我在两台机器上访问这个相同的页面,结果显示每个客户端是会相互干扰的。
    public static int tt;
    private void Page_Load(object sender, System.EventArgs e)
    {
    Response.Write("tt="+tt.ToString());
    tt ++;
    }
      

  24.   

    同意 shuangren(双刃) 的说法
    是相互干扰的,我页测试过
      

  25.   

    这个问题真的很典型,我曾经也想过用静态变量,如果是每个用户一个单独的变量的,那还要SESSION干嘛。
    但我测试了一下,不同的用户在访问用静态变量取得值的同一个页面时,是会相互干扰的。
      

  26.   

    所以绝对不要用static,除非你知道你在干什么,呵呵,别人说的