Cookie中可以存储哪些类型的数据?

时间:2013-01-26 09:00:07

标签: c# asp.net

我正在使用C#学习ASP.net,我想知道我们是否可以在cookie中存储除字符串以外的数据,如日期/时间或小数或双倍。

2 个答案:

答案 0 :(得分:13)

您可以序列化为string并反序列化为该类型的任何类型的数据都可以存储在cookie中。例如:ObjectDateTimeIntDecimal等。


这完全取决于你的编码逻辑;字符串几乎可以转换回任何东西,

  • 对象
  • 内部
  • 十进制
  • 日期时间
  • 对访客用户可以保留的任何临时表/值的引用

  

可以从cookie中获取对象吗?

不,不是像你想的那样直接。不要以ASP.NET为例。考虑一下HTTP cookie在现实中的含义。它是一个HTTP标头。 HTTP标头只是纯字符串值。 HTTP协议中不存在对象的概念。

因此,您需要将您拥有的.NET对象序列化为字符串,然后将其反序列化。

您可以使用.NET中的不同序列化程序。例如,使用BinaryFormatter然后Base64 encode生成的字节数组存储到cookie中。

反序列化是反向过程 - 你从cookie中读取值(它总是一个字符串),然后你Base64 decode将它变成一个字节数组,你使用{{1}反序列化回原始对象}}

请记住,虽然Cookie的大小有限,但在不同浏览器之间会有所不同。所以不要指望将大型对象放入cookie中。该值将被剥离,您将获得损坏的数据。如果对象的序列化值大于2k个字符,我就不会使用它们。

让我们举例说明前面描述的过程:

BinaryFormatter

Credit & Reference

答案 1 :(得分:3)

数据始终存储为String类型。但是,由于您是存储数据的人,因此您应该知道数据类型。因此,在回读数据时,您可以使用适当的转换函数来获取所需的任何数据类型。