在ASP.Net中,有时候考虑到较多的使用Session来保存对象,会增加服务器的负载,所以我们会选择用Cookies来保存对象的状态,而Cookies只能保存字符串,这时,我们可以考虑用序列化操作来完成我们的目标。

引入的命名空间 

using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

将对象保存到Cookie中。

Person person=new Person();  //要存放的类

BinaryFormatter bf=new BinaryFormatter();  //声明一个序列化类

MemoryStream ms=new MemoryStream();  //声明一个内存流

bf.Serialize(ms,person);  //执行序列化操作

byte[] result=new byte[ms.Length];

result=ms.ToArray();

string temp=System.Convert.ToBase64String(result);  

 /*此处为关键步骤,将得到的字节数组按照一定的编码格式转换为字符串,不然当对象包含中文时,进行反序列化操作时会产生编码错误*/

ms.Flush();

ms.Close();

HttpCookie cookie=new HttpCookie("person");  //声明一个Key为person的Cookie对象

cookie.Expires=DateTime.Now.AddDays(1.0);  //设置Cookie的有效期到明天为止,此处时间可以根据需要设置

cookie.Value=temp;  //将cookie的Value值设置为temp

Response.Cookies.Add(cookie);

从Cookie中取出保存的对象值

string result=Request.Cookies["person"].Value;

byte[] b=System.Convert.FromBase64String(result);  //将得到的字符串根据相同的编码格式分成字节数组

MemoryStream ms=new MemoryStream(b,,b.Length);  //从字节数组中得到内存流

BinaryFormatter bf=new BinaryFormatter();

Person person=bf.Deserialize(ms) as Person;  //反序列化得到Person类对象

ASP.Net如何用Cookies保存对象的更多相关文章

  1. 秒懂ASP.NET中的内置对象

    上篇博客,小编主要简单的介绍了一下ASP.NET中的控件,这篇博客,小编主要简单总结一下ASP.NET中的内置对象,七个内置对象分别是:Request.Response.Application.Coo ...

  2. ASP.NET Web API的核心对象:HttpController

    ASP.NET Web API的核心对象:HttpController 对于ASP.NET Web API来说,所谓的Web API定义在继承自ApiController的类中,可能ApiContro ...

  3. 保存对象时碰到的问题-列名 'Discriminator' 无效

    今天保存对象时碰到问题: {"列名 'Discriminator' 无效.\r\n列名 'Discriminator' 无效."}  百度了一下,百度找到的一个解决: http:/ ...

  4. cookie和session是否可以保存对象

    session看了一下,是可以保存对象的.语法很普通,但是cookie的话本身是只能保存string类型的信息的,这就需要先序列化,然后接收的页面反序列化后形成对象调用,为了防止乱码,需要在数据传输的 ...

  5. selenium+requests进行cookies保存读取操作

    看这篇文章之前大家可以先看下我的上一篇文章:cookies详解 本篇我们就针对上一篇来说一下cookies的基本应用 使用selenium模拟登陆百度 from selenium import web ...

  6. sharedpreferences如何保存对象

    昨天做了一个搜索历史的功能,然后根据搜索的历史可以调回到上一个页面,这里涉及到一个用sharedpreferences保存对象的问题,sharedpreferences是不能够直接保存对象的,我们需要 ...

  7. ASP.NET的MVC中Model对象字段的数…

    ASP.NET的MVC中Model对象字段的常用数据说明属性: Required——该字段不允许为空. MaxLength——设置数组或字符串最大长度. StringLength——设置字符串最小和最 ...

  8. 使用JPA保存对象时报nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly错误

    使用JPA保存对象时报nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOn ...

  9. STL中list中push_back(对象)保存对象的内部实现

    STL中list中push_back(对象)保存对象的内部实现 1. 在容器中,存放的是对象拷贝 #include<iostream> #include<list> using ...

随机推荐

  1. hdu 5373 The shortest problem(杭电多校赛第七场)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5373 The shortest problem Time Limit: 3000/1500 MS (J ...

  2. Callback2.0

    Callback定义? a callback is a piece of executable code that is passed as an argument to other code, wh ...

  3. perl6 HTTP::UserAgent (3) JSON

    如果一个 URL 要求POST数据是 JSON格式的, 那我们要怎么发送数据呢? 第一种: HTTP::Request 上一篇说到, 发送 POST 数据, 可以: . $ua.post(url, % ...

  4. logging模块配置笔记

    logging模块配置笔记 log文件的路径 #判断在当前的目录下是否有一个logs文件夹.没有则创建 log_dir = os.path.dirname(os.path.dirname(__file ...

  5. 安装Https证书

    安装证书 IIS 6 支持PFX格式证书,下载包中包含PFX格式证书和密码文件.以沃通证书为例: 文件说明: 1. 证书文件214083006430955.pem,包含两段内容,请不要删除任何一段内容 ...

  6. [How to] 使用HBase协处理器---基本概念和regionObserver的简单实现

    1. 简介 对于HBase的协处理器概念可由其官方博文了解:https://blogs.apache.org/hbase/entry/coprocessor_introduction 总体来说其包含两 ...

  7. 报错:Cobbler check 时报错

    报错:[root@test88 ~]# cobbler checkTraceback (most recent call last):  File "/usr/bin/cobbler&quo ...

  8. 模块定义文件.def

    一作用 DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明:另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供 ...

  9. PC端网站跳转手机端网站

    <SCRIPT LANGUAGE="JavaScript"> function mobile_device_detect(url) { var thisOS=navig ...

  10. pandas 数据结构的基本功能

    操作Series和DataFrame中的数据的常用方法: 导入python库: import numpy as np import pandas as pd 测试的数据结构: Series: > ...