在Asp.NET开发web应用程序中,Session经常用到来保存一些临时的状态值。
我想知道的是,如果同时有几个用户访问应用程序,会不会产生Session中的内容被重写的问题?
比如说:
在aspx.cs文件中,当某个事件被触发时,有:
Session.Add("content",s_content);
在后续的一个事件中,取出这个Session中的值来使用
string strContent = Session["content"].ToString();
如果一个用户触发了第一个事件之后,另一个也在访问同一页面的用户也触发了这一事件,那么第一个用户看到的Session[“content”]会不会已经被改写了?因为Session是服务器端的对象,不同的用户访问它,到底操作的是不是同一个session呢?还是有某种机制让每一个用户都操作着不同的session?另外想请教的问题是,Asp.NET中除了Session,Cookie之外,可以用什么来保存一些比较大的临时数据?是否可以在Page类那里定义一些protected数据成员供以后使用?

解决方案 »

  1.   

    每个用户一个Session,一个用户永远无法重写另一个用户的Session。保存大的临时的数据,如果是所有用户共用的,可以用Cache,否则选择Session----------------------------------------
    欢迎使用AspNetPager免费分页控件:http://www.webdiyer.com
      

  2.   

    还想问一下,
    可不可以在System.Web.UI.Page的继承类那里声明一些变量来保存数据?
      

  3.   

    每个用户的SESSION是不一样的如果用户过多,SESSION将占用不少的系统资源
    不提倡过多的用SESSION
      

  4.   

    可以
    比如:
    public class XXX : System.Web.UI.Page
    {
            string conn = ""; private void Page_Load(object sender, System.EventArgs e)
    {
              }
    }
      

  5.   

    可不可以在System.Web.UI.Page的继承类那里声明一些变量来保存数据?==================>完全可以,但请注意变量的作用范围,如果不是保存在Session、Cache这些对象中,那么一般只对当前页面有效。
      

  6.   

    完全可以,但请注意变量的作用范围,如果不是保存在Session、Cache这些对象中,那么一般只对当前页面有效。
    ==================>
    Session的作用域是整个的project吗?如果project很大,那不同的页面中如果定义了一些同名的Session岂不是很危险?怎么样避免这种情况呢?
      

  7.   

    可不可以在System.Web.UI.Page的继承类那里声明一些变量来保存数据?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    回复人: webdiyer(陕北吴旗娃) ( ) 信誉:115 能不能寫個例子讓偶學習一下~