BASE64中的Cookie编码无法正确发送到服务器

Bar*_*tta 2 asp.net cookies asp.net-web-api

我使用BASE64编码GUID值并将它们添加到cookie.例如,ecoded guid值是vClFwpDbWE6JPUlnlBXMWg==.当服务器发送响应时,它将添加此cookie.我查看了Chrome,浏览器正确接收了此值.但是当浏览器发送另一个请求时,cookie值会vClFwpDbWE6JPUlnlBXMWg从HttpRequestMessage的cookie 更改为" ",为什么删除某些字符?

我使用带有IIS7.5的WebAPI2,MVC5.

Lev*_*evi 5

ASP.NET在cookie中看到'='字符,并假设它是一个多值cookie(请参阅相关问题在cookie中存储多个值).

最好的办法是按原样将GUID存储在cookie中,例如,使用Guid.ToString()将GUID转换为十六进制字符串,使用新的Guid(字符串)将十六进制字符串转换回GUID.或者,如果您确实需要将其浓缩为BASE64,请考虑使用HttpServerUtility的UrlTokenEncodeUrlTokenDecode方法.这些方法使用的编码与BASE64非常相似,但不使用由ASP.NET专门处理的"+"和"="等字符.