C# MachineKey.编码不工作

C# MachineKey.编码不工作,c#,asp.net,cookies,C#,Asp.net,Cookies,我试图用Machine.Encode方法对asp.net 4.0中的cookie进行加密,但出现编译错误。错误位于“Response.Cookies.Add”行。什么是正确的方法 错误2参数1:无法从“字符串”转换为 “System.Web.HttpCookie”错误1与的最佳重载方法匹配 “System.Web.HttpCookieCollection.Add(System.Web.HttpCookie)”有一些 无效参数 正如错误明确指出的那样,Cookies.Add()接受一个HttpCo

我试图用Machine.Encode方法对asp.net 4.0中的cookie进行加密,但出现编译错误。错误位于“Response.Cookies.Add”行。什么是正确的方法

错误2参数1:无法从“字符串”转换为 “System.Web.HttpCookie”错误1与的最佳重载方法匹配 “System.Web.HttpCookieCollection.Add(System.Web.HttpCookie)”有一些 无效参数 正如错误明确指出的那样,
Cookies.Add()
接受一个
HttpCookie
对象,而不是字符串


您需要使用密文以及cookie的任何选项(例如
安全
HttpOnly
)来构造
HttpCookie

您所犯错误的混淆之处是什么?您不了解错误的哪一部分?
MachineKey.Encode
会造成安全漏洞。您必须阅读@ayha,您可能想加密customerId。这就是您所需要的
public static string MachEncrypt (string plaintextValue)
{
    var plaintextBytes = Encoding.UTF8.GetBytes (plaintextValue);
    return MachineKey.Encode (plaintextBytes, MachineKeyProtection.All);
}

public static string MachDecrypt (string encryptedValue)
{
    try
    {
        var decryptedBytes = MachineKey.Decode (encryptedValue, MachineKeyProtection.All);
        return Encoding.UTF8.GetString (decryptedBytes);
    }
    catch
    {
        return null;
    }
}

HttpCookie myCookie = new HttpCookie("co");
myCookie.Values.Add("customerId", dr["customerId"].ToString());
if (chkRemember.Checked)
{
    myCookie.Expires = DateTime.Now.AddDays(30);
}   
Response.Cookies.Add(StringEncryptor.MachEncrypt(myCookie.ToString()));