在A.aspx页面中按钮触发:HttpCookie pcook = new HttpCookie("uInfo");
pcook.Values["Name"] = "jock";
pcook.Values["Type"] = "1";
pcook.Expires = DateTime.Now.AddDays(1);
Response.AppendCookie(pcook);然后跳转到B.aspx页面:
protected void Page_Load(object sender, EventArgs e)
{
            HttpCookie cook = Request.Cookies["uInfo"];
            string cookstr = cook.Values["Name"];
            Response.Write(cookstr);
            
}
错误:
string cookstr = cook.Values["Name"];    这句报错“未将对象引用设置到对象的实例”看来是cookie没写上,这是哪步出错了啊

解决方案 »

  1.   

    HttpCookie cook = Request.Cookies["uInfo"]; 
    if(cook!=null)
    {
                string cookstr = cook.Values["Name"]; 
                Response.Write(cookstr); 
    }
      

  2.   


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>    
        <asp:Button ID="btnShow" runat="server" Text="显示cookie [Name]" 
                onclick="btnShow_Click" />
        <asp:Button ID="btnSet" runat="server" Text="设置cookie [Name]" 
                onclick="btnSet_Click" />
        <asp:Button ID="btnDel" runat="server" Text="删除cookie [Name]" 
                onclick="btnDel_Click" />    
        </div>
        </form>
    </body>
    </html>
    protected void btnShow_Click(object sender, EventArgs e)
        {
            if (Request.Cookies["Name"] == null)
            {
                Response.Write("Cookies[Name] 不存在");
            }
            else
            {
                Response.Write(string.Format("Cookies[Name]:{0}", Request.Cookies["Name"].Value));
            }        
        }
        protected void btnSet_Click(object sender, EventArgs e)
        {
            if (Request.Cookies["Name"] == null)
            {
                HttpCookie hc = new HttpCookie("Name", "Sandy");
                hc.Expires = DateTime.Now.AddDays(1);
                Response.Cookies.Add(hc);
            }
            else
            {
                Response.Cookies["Name"].Value = "Sandy";
                Response.Cookies["Name"].Expires = DateTime.Now.AddDays(1);
            }
        }
        protected void btnDel_Click(object sender, EventArgs e)
        {
            if (Request.Cookies["Name"] != null)
            {
                Response.Cookies["Name"].Expires = DateTime.Now.AddDays(-1);
            }
        }
      

  3.   

    HttpCookie pcook = new HttpCookie("uInfo"); 
    pcook.Values["Name"] = "jock"; 
    pcook.Values["Type"] = "1"; 
    pcook.Expires = DateTime.Now.AddDays(1); 
    Response.AppendCookie(pcook); ---------
    也许你的按钮点击代码以后马上跳转导致A页面回传数据没完成就到B页面了,导致cookie没进入客户端,
    在这段代码后加上Response.Flush();后再跳转试试
      

  4.   

    加一下IF判断是否为空,避免编译错误
    if(cook!=null) 但是为什么会取不到cookies就要靠楼主自己调试才清楚了
      

  5.   


    你的写法好怪,是正确的吗?
    建议:
    pcook.Values["Name"] = "jock";
    pcook.Values["Type"] = "1";
    改为
    pcook.["Name"] = "jock";
    pcook.["Type"] = "1";将
                HttpCookie cook = Request.Cookies["uInfo"];
                string cookstr = cook.Values["Name"]; 
    改为
    string cookstr = Request.Cookies["uInfo"]["Name"];
      

  6.   

    你的写法好怪,是正确的吗? 
    建议: 
    pcook.Values["Name"] = "jock"; 
    pcook.Values["Type"] = "1"; 
    改为 
    pcook["Name"] = "jock"; 
    pcook["Type"] = "1"; 将 
                HttpCookie cook = Request.Cookies["uInfo"]; 
                string cookstr = cook.Values["Name"]; 
    改为 
    string cookstr = Request.Cookies["uInfo"]["Name"];
      

  7.   

    第一次请求页面的时候Cookie为空,PageLoad第一次执行时cook.Values["Name"]的cook为null,肯定报Null异常啊