可是winForm登录怎么记住Session或者cookie呢?因为该系统有winFrom和webForm组合的,有功能是WinForm,有WebForm,都需要验证身份,不想登录两次,希望WinForm登录后对Web也有Session效果

解决方案 »

  1.   

    WEBBROWER显示页面
    CookieContainer myCookieContainer = new CookieContainer(); 
    string cookieStr = webBrowser1.Document.Cookie;
    string[] cookstr = cookieStr.Split( '; '); 
    foreach (string str in cookstr) 
    { } 
      

  2.   

    这个不行呀,我需要的是像QQ 那样的功能,和MSN 邮箱那样的,在客户端登陆WINFORM 之后,
    进浏览器可以直接知道是那个用户,知道状态   
    这个怎么做呢,
      

  3.   

    winform记住session,因该是不行的哦,session是web的对象
      

  4.   

    关键是用WEBQUEST 之后,他防问WEB 服务器上的页面,同时我也在WEB 页面上创建了SESSION ,和COOKIES ,用WINFORM ,再仿问页面的时候COOKIES是存在的,但是  用IE 浏览器看的时候是没有COOKIES
    如果直接用IE访问页面,但COOKIES 存在,有谁能告诉我这是怎么一回事情吗,还是需要加入SOCKET 技术呢,
    那么SOCKET 请求HTTP的时候,能否让浏览器IE知道之前有COOKIES 
      

  5.   

    QQ是什么样的呢
    是这样的
    在QQ界面上点击相应的功能,如空间时就会将当前用户信息生产一个加密的字符串,然后打开网页将这个字符串传过去
    然后网页后台就解析这个字符串,生成网页的登陆信息
      

  6.   

    如果是用Cookies 那么,要怎样使用,如何建议,使得一登陆就会产生一个Cookies     
    有现成的代码
      

  7.   

    当你在c/s中登陆之后 将信息写到一个文件中,当打开b/s的时候 判断读取这个文件 获取信息创建登陆
      

  8.   


    谢谢你的提意,这种方式也行,但是有一点不太好,
    第一:路径的问题,也就是说每次我都要把文件路径告之给B/S 的程序,再就是文件流的问题,我想你肯定会说用二进制的,
    第二:就是信息加密的问题不现我现在已经做了我自己认为很完美的解决方法
    这几天先把任务完成,过几天将完整例子从我的项目中抽取出来,然后贴出来可以做到只Session Cookies 时时检测,即下线处理,类似QQ那样的,现在的实现模式跟QQ差不多,但绝对不是像6楼说的那样  谢谢大家,
      

  9.   

     public class session
          {
              private static Hashtable ht=new Hashtable();
              
              /// <summary>
              /// 保存临时对象 
              /// </summary>
              /// <param name="key">对象名</param>
              /// <param name="obj">对象</param>
              public static void SetObject(string key, object obj)
              {
                  if (ht.Contains(key))
                  {
                      ht.Remove(key);
                      ht.Add(key, obj);
                  }
                  else
                  {
                      ht.Add(key, obj);
                  }
              }
              /// <summary>
              /// 获取保存到临时变里的的对象
              /// </summary>
              /// <param name="key">对象名</param>
              /// <returns>对象</returns>
              public static object GetObject(string key)
              { 
                    Hashtable temp = (Hashtable)ht;
                    if (temp.Contains(key))
                    {
                        return temp[key] ;
                    }
                    else
                    {
                        return null;
                    } 
              }
              /// <summary>
              /// 保存字符串到临时变量里
              /// </summary>
              /// <param name="key">变量名</param>
              /// <param name="values">字符串</param>
              public static void set(string key,string values)
              {
                  if (ht.Contains(key))
                  {
                      ht.Remove(key);
                      ht.Add(key, values);
                  }
                  else
                  {
                      ht.Add(key, values);
                  }
              }
              /// <summary>
              /// 获取临时变量的字符串值
              /// </summary>
              /// <param name="key">字符串名</param>
              /// <returns>字符串</returns>
              public static string get(string key)
              {
                  try
                  {
                      Hashtable temp = (Hashtable)ht;
                      if (temp.Contains(key))
                      {
                          return temp[key].ToString();
                      }
                      else
                      {
                          return null;
                      }
                  }
                  catch
                  {
                      return null;
                  }
              }
              /// <summary>
              /// 获取临时变量里的整数 
              /// </summary>
              /// <param name="key">变量名</param>
              /// <returns>整数</returns>
              public static int getInt(string key)
              {
                  Hashtable temp = (Hashtable)ht;
                  if (temp.Contains(key))
                  {
                      return  Convert.ToInt16(temp[key].ToString());
                  }
                  else
                  {
                      return 0;
                  } 
              }
              /// <summary>
              /// 获取临时变里的浮点数
              /// </summary>
              /// <param name="key">变量名</param>
              /// <returns>double数</returns>
              public static double getIDouble(string key)
              {
                  Hashtable temp = (Hashtable)ht;
                  if (temp.Contains(key))
                  {
                      return Convert.ToDouble(temp[key].ToString());
                  }
                  else
                  {
                      return 0;
                  }
              }
              /// <summary>
              /// 获取临时变量名里的布尔值
              /// </summary>
              /// <param name="key">变量名</param>
              /// <returns>布尔值</returns>
              public static bool getBool(string key)
              {
                  Hashtable temp = (Hashtable)ht;
                  if (temp.Contains(key))
                  {
                      return Convert.ToBoolean(temp[key]);
                  }
                  else
                  {
                      return false;
                  }
              }
              /// <summary>
              /// 合并临时变量字符串
              /// </summary>
              /// <param name="key">变量名</param>
              /// <param name="str">要合并的字符串</param>
              /// <param name="lk">0为合并到尾部,1为加到头部</param>
              public static void MergerSting(string key, string str,int lk=0)
              {
                  string tk = get(key) + str;
              }
              /// <summary>
              /// 累加整数到临时变量
              /// </summary>
              /// <param name="key">变量名</param>
              /// <param name="iv">累加值</param>
              public static void MergerInt(string key, int iv)
              {
                  int tk = getInt(key) + iv;
                  SetObject(key, tk);
              }
              /// <summary>
              /// 累加double到临时变量
              /// </summary>
              /// <param name="key">变量名</param>
              /// <param name="dv">累加值</param>
              public static void MergerDouble(string key, double dv)
              {
                  double tk = getInt(key) + dv;
                  SetObject(key, tk);
              }
              /// <summary>
              /// 删除临时变量
              /// </summary>
              /// <param name="key">变量名</param>
              public static  void remove(string key)
              {
                  ht.Remove(key);
              }
              /// <summary>
              /// 清除所有临时变量
              /// </summary>
              public static void clearAll()
              {
                  ht.Clear();
              }
          }
      

  10.   

    好久没有来 CSDN 了 都到CNBLOGS  去了  想不到这个帖子还有人关注 嘿嘿支持一下如果想要解决方法的可以加我QQ:172828815