C#解析cookie获取null

时间:2011-06-22 14:27:39

标签: c# cookies

这是我的cookie值:

email%3Drrr%2540test.com%26password%3Da8f5f167f44f4964e6c998dee827110c

那是我的代码:

Request.Cookies["SolidDomain"]["email"];
Request.Cookies["SolidDomain"]["password"];

 string email1 = Request.Cookies.Get("SolidDomain").Values.Get("email");
 string password2 = Request.Cookies.Get("SolidDomain").Values.Get("password");

在这两种情况下我都是null。这有什么不对?

1 个答案:

答案 0 :(得分:1)

你可以没有问题地拥有子键cookie,但我认为你给我们的字符串不是使用子键。实际上,您发布的字符串可以直接访问:

Request.Cookies["email"];
Request.Cookies["password"];

如果您可以检查子项的结构,可以使用以下代码片段:

for(int i=0; i<Request.Cookies.Count; i++)
{
    aCookie = Request.Cookies[i];
    output.Append("Name = " + aCookie.Name + "<br />");
    if(aCookie.HasKeys)
    {
        for(int j=0; j<aCookie.Values.Count; j++)
        {
            subkeyName = Server.HtmlEncode(aCookie.Values.AllKeys[j]);
            subkeyValue = Server.HtmlEncode(aCookie.Values[j]);
            output.Append("Subkey name = " + subkeyName + "<br />");
            output.Append("Subkey value = " + subkeyValue + 
                "<br /><br />");
        }
    }
    else
    {
        output.Append("Value = " + Server.HtmlEncode(aCookie.Value) +
            "<br /><br />");
    }
}

检查输出变量以查看Value和SubKey值。

如果你想允许cookie到域(我想这是你想要实现的),你可以使用domain属性来实现:

Response.Cookies["password"].Domain = "SolidDomain";