现在有个疑问 
   假如现在有个登陆页面 每次登陆的时候用seesion["userName"]=登陆名;  用 Session保存用户名; 
 
如果这个软件有很多人在使用登陆的时候会不会混淆啊! 详细介绍一下Session保存值的原理! 谢谢

解决方案 »

  1.   

    原理不太知道。。如果在本地在同一个页面打开两个标签。如果使用了不同的username就会混淆。。一般情况下不同用户不会混淆。
      

  2.   

    http://topic.csdn.net/t/20021206/17/1238369.html
    参考
      

  3.   

    session不会被混淆的只要你的用户标识是唯一的就行
      

  4.   


    在cookie中有一个叫做ASP.NET_SessionId的,它保存了SessionID。当你的程序向Session集合中写数据之前,asp.net每一次会重新随机生成这个值。这个“随机”,基本上可以认为平均几千年才有可能出现世界上两个值恰好相同的情况。直到你的程序把一个数据保存到Session集合,asp.net就不再修改这个值了,于是SessionID就不再改变了。实际上,当客户端请求服务器,asp.net是创建了一个Session集合,然后把当前SessionID对应的所有Session集合项目写入这个集合。然后当页面声明周期结束,当前的Session集合就释放了。等下一次再请求,再重建。当asp.net应用程序重启时,整个网站的内存数据丢失了,Session集合中的数据当然也就是空的了。但是此时SessionID并不会丢失,因为它来自于cookie数据,不是服务器内存中的数据。
      

  5.   

    嗯,我测试了一下,asp.net3.0时会自动重新生成SessionID,直到你的代码往Session集合里放入第一个值才不变化。而3.5版本则一开始就不变化。也许是作为一个BUG而修复了吧。测试代码是这样<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">    protected void Button2_Click(object sender, EventArgs e)
        {
            Session["12213123"] = "test";
        }    protected void Page_PreRender(object sender, EventArgs e)
        {
            this.Label1.DataBind();
        }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Label ID="Label1" runat="server" Text='<%#  "SessionID="+Session.SessionID %>'
            EnableViewState="false" />
        <asp:Button ID="Button1" runat="server" Text="Button" />&nbsp;
        <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
        </form>
    </body>
    </html>