行 89:  {   
行 90:     string name,password;
行 91:  if (Request.Cookies["userinfo"]["name"].ToString()!=null )
行 92:  { name=Request.Cookies["userinfo"]["name"].ToString();}
行 93:  else name="";
 源文件: h:\第8章\testnews\data\login.aspx.cs    行: 91 
我如果事先写入了cookie就不报错,但如果用户清除了cookie那就不行了,也就是说要机子上有
Cookies["userinfo"]["name"]存在才行,这样好像不合理吧?再说了也用了IF来判断了,哪位老兄知道,谢谢!

解决方案 »

  1.   

    Request.Cookies["userinfo"]["name"] != null
      

  2.   

    Response.Cookies["FullName"].Value = customerDetails.FullName;
      你试试 这样   
    customerDetails 是类里的一个 结构体
      

  3.   

    假如
    object o = Request.Cookies["userinfo"]["name"] 
    如果
    o 是空引用
    那么 o.ToString() 是什么呢?难道是null吗?你的程序就错在这里
      

  4.   

    zyug(LovlyPuppy兄,你说的这句我已经用了啊!
     io8(星宇) 兄,你给的代码我不是太明白,但是现在重要的是取cookie,因为不管写入怎么写,用户清除Cookie后就没有用了!谢谢!
      

  5.   

    行 89:  {   
    行 90:     string name,password;
    行 91:  if (Request.Cookies["userinfo"]["name"]!=null )
    行 92:  { name=Request.Cookies["userinfo"]["name"].ToString();}
    行 93:  else name="";
    我把tostring去掉一样的报错!
      

  6.   

    我也遇到这样的问题,应该是必须有才可以,即使Cookie内容是null,但也要有Cookie
      

  7.   

    回hushan518(海阔天空)兄,那这样的话cookie还有什么用,我想应该不是这样的,很多网站不是也有cookie的吗,我清除了cookie输入用户名就是嘛,报错就是我的错了!
      

  8.   

    Request.Cookies["userinfo"]["name"].ToString() 就已经告诉服务器对象是存在的了if(Request.Cookies["userinfo"]["name"] != null)
    ......
      

  9.   

    问题在这一句
    if (Request.Cookies["userinfo"]["name"].ToString()!=null )类型null并非文本类型,它是一个object类型
    Request.Cookies["userinfo"]["name"]这样取到的值,也不是文本类型,所以我们在使用的时候要对它进行转换,转成文本,恰恰在转换的时候出错了,因为文本类型的值是不可以null的,变量为null的时候想转换成文本必然出错.
    所以楼主应改如下:
    if(this.Request.Cookies["userinfo"]["name"] != null || this.Request.Cookies["userinfo"]["name"].ToString() != "")
    或者:
    if((this.Request.Cookies["userinfo"]["name"] + "a") != "a")
      

  10.   

    这个问题我也用过~如果是空的话~用.ToString()方法就会出现你的错误~
    问题是如果是空的话~this.Request.Cookies["userinfo"]["name"] 也不会等于null
    解决的办法你可以用这个:
    try
    {
         string name,password;
         if (Request.Cookies["userinfo"]["name"].ToString()!=null )
            { name=Request.Cookies["userinfo"]["name"].ToString();}
    }
    catch

         name="";}
         意思就是说,如果不为空的话~就不会出错,所以就直接赋值,
         如果为空,就会出错,则执行catch的内容
      

  11.   


    if (Request.Cookies["userinfo"]["name"].ToString()!=null )
    改成
    if(!Object.ReferenceEquals(Request.Cookies["userinfo"]["name"],null))
      

  12.   

    Request.Cookies["userinfo"]["name"]即使是空值的话,你用判断语句的时候,你引用了一个空值,就会有异常,
    按照上面的就解决了
      

  13.   

    你们都错啦
    应该这样
    if(Request.Cookies["userinfo"]!=null && Request.Cookies["userinfo"]["name"]!=null)
    {
    }
    楼主存储的name是userinfo键值得子键值,userinfo都不存在还谈什么name