当一个用户访问我的网站的首页时,我想获取该用户的SessionID:
以下做法不知道正不正确,请高手指点。
谢谢!!!有两个网页,一个是登录的首页,一个是登录后跳转的目标页:
Login.aspx.cs登录页的后台代码protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) 
        {
            string sID = Session.SessionID.ToString();//我听说Session是服务器分配自动的,此时的SessionID是那个
            Session["sID"] = sID;                     //自动获取的值吗?????
        }        
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string userName = this.TextBox1.Text;
        Session["userName"] = userName;
        Response.Redirect("Target.aspx");
    }
Target.aspx
protected void Page_Load(object sender, EventArgs e)
    {
        string userName = Session["userName"].ToString();
        string sID = Session["sID"].ToString();
        Response.Write(string.Format("欢迎{0}登陆,您的SessionID是{1}。", userName, sID));
    }

解决方案 »

  1.   

    对的,但sessionid似乎没什么意义.
      

  2.   

    看到忍不住要说一下,把SessionID 放到session 是多余的操作
      

  3.   


    你的意思是在garget.aspx取得的sID和上面再Login.aspx中保存起来的是一样的吗????
    protected void Page_Load(object sender, EventArgs e)
    {
       string sID = Session.SessionID.ToString();        
    }
      

  4.   


    //不要试图操作SessionID,毫无意义
      

  5.   

    sessionid不用再存入session了,可以通过session访问,是由服务器随机生成的24位字符串。可以用来 统计在线用户啊
      

  6.   

    不知道你的希望拿Session来做什么,是用来保持登录状态还是想统计?
      

  7.   

    完全正确。只要向session集合中写入东西,SessionID就不再变化了。SessionID可以用来唯一代表会话信息。实际上,Session集合中的东西随时可能丢失,只有sessionID是不丢失的。
      

  8.   

    让我们来看看Session的真实面目响应头信息查看源代码
    Server ASP.NET Development Server/9.0.0.0
    Date Wed, 07 Apr 2010 01:23:09 GMT
    X-AspNet-Version 2.0.50727
    Cache-Control private
    Content-Type text/html; charset=utf-8
    Content-Length 501
    Connection Close
    请求头信息查看源代码
    Host localhost:4285
    User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
    Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language zh-cn,zh;q=0.5
    Accept-Encoding gzip,deflate
    Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive 115
    Connection keep-alive
    Cookie ASP.NET_SessionId=v5wdrnrdl0l2htnpwvl4ii55其实就是浏览器记住了服务器响应发过来的一串ID,所以说,关闭浏览器窗口,其实这个id对应的session并未立即过期,只不过是浏览器不记住这个了而已
      

  9.   

    关闭浏览器窗口,这要看所谓浏览器是什么、怎样的浏览器。例如在IE,你按Crl+N键,复制一个新的窗口(同一进程),然后关闭一个窗口,显然进程并没有停止。但是一旦浏览器进程停止,SessionID肯定也就不会维持了。(除非我们再把它写到硬盘上,可是asp.net并不写)
      

  10.   

    其实无须写  Session["sID"] = sID; 胡乱向Session集合中放入一个东西就可以了,例如写Session["adfas"]=true;Session集合中的东西会随时丢失的,在生产服务器越是到了繁忙的节日,越是可能每隔10几分钟就丢失一次。如果知道这个,否则只会隐藏麻烦。
      

  11.   

    你写的这个session  根本毫无意义可言  给你举一个例子 Stock stock=StockManager.GetStockById(request.QueryString["id"](这里是从前面那个页面传过来的Id));
    session["stocks"]=stock;//这个时候session才有值
      

  12.   

    做单点登录的时候sessionid是有意义的!最近正在做这样的东西!头都大啦!