asp.net信息保存总结

ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等)

以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)

在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?
    为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示:

方法 信息量大小 保存时间 应用范围 保存位置
Application 任意大小 整个应用程序的生命期 所有用户 服务器端
Session 小量,简单的数据
用户活动时间+一段延迟时间(一般
为20分钟)

单个用户 服务器端
Cookie 小量,简单的数据 可以根据需要设定 单个用户 客户端
Viewstate 小量,简单的数据 一个Web页面的生命期 单个用户 客户端
Cache 任意大小 可以根据需要设定 所有用户 服务器端
隐藏域 小量,简单的数据 一个Web页面的生命期 单个用户 客户端
查询字符串 小量,简单的数据 直到下次页面跳转请求 单个用户 客户端
Web.Config文件 不变或极少改变的小量数据 直到配置文件被更新 单个用户 服务器端

1.Application对象 
    Application用于保存所有用户的公共的数据信息,如果使用Application对象,一个需要考虑的问题是任何写操作都要在 Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和 Applicaiton.Unlock方法来避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性 能瓶颈.因此最好不要用此对象保存大的数据集合. 
       2.Session对象
    Session用于保存每个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).S
ession中的信息保存在Web服务器内容中,保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用 程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错 的选择.使用Session对象保存信息的代码如下:

//存放信息
Session["username"]="zhouhuan";
//读取数据
string UserName=Session["username"].ToString();

3.Cookie对象
    Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置 Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不 会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4096,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持 Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用 Cookie对象保存的代码如下:

//存放信息
Response.Cookies["UserID"].Value="0001";
//读取信息
string UserID=Response.Cookies["UserID"].Value;

4.ViewState对象
    ViewState 常用于保存单个用户的状态信息,有效期等于页面的生存期。ViewState容器可以保持大量的数据,但是必须谨慎使用,因为过多使用会影响应用程序的性 能。所有Web服务器控件都使用ViewState在页面回发期音保存自己的状态信息。如果某个控件不需要在回发期间保存状态信息,最好关闭该对象的 ViewState,避免不必要的资源浪费。通过给@Page指令添加“EnableViewState=false”属性可以禁止整个页面的 ViewState。使用ViewState对象保存信息的代码如下。

  //存放信息
   ViewState["nameID"]="0001";
  //读取信息
   string NameID=ViewState["nameID"].ToString();

5.Cache对象
    Cache对象用于在HTTP请求间保存页面或数据。该对象的使用可以极大地提高整个应用程序的效率。它允许将频繁访问的大量服务器资源存储在内存 中,当用户发出相同的请求后服务器不再次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求的时间。此对象的实例是每个应用程序专用的, 其生存期依赖于该应用程序的生存期。当重新启动应用程序时,将重新创建其Cache对象的实例。使用Cache对象保存信息的代码如下。

  //存放信息
   Cache["nameID"]="0001";
  //存放信息
   Cache.Insert("nameID","0001"1);
  //读取信息
  string NameID=Cache["nameID"].ToString();

6.隐藏域
Hidden控件是属于HTML类型的服务器控件,使用此控件可以实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大区别,只是它不会在用户端 的浏览器中显示,始终处于隐藏状态。但是每次页面提交的时候,此控件和其它服务器控件一同提交到服务器端,因此在服务器端可以使用Value属性获取或保 存一些数据信息。使用Hidden控件保存信息的代码如下。

  //存放信息
  Hidden.Value="0001";
  //获取信息
  string NameID=Hidden.Value;

7.查询字符串
查询字符串的方式是将要传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端的重定向。这种方式可以实现在两个页面之间传递信息。由于URL的长度有一定的限制,因此不能传递太大的信息,加外安全性也不是很好。
传递信息如下。

   Response.Redirect("List.aspx?nameID=0001&gradeID=002");
  //执行上面的语句后在IE地址栏显示的URL的代码如下。
   http://localhost/List.aspx?nameID=0001&grade=002
  //当跳转到List.aspx后,可以通过以下代码获得所传递的信息。
  string NameID.GradeID;
   NameID=Request.Params["nameID"];
   GradeID=Request.Params["gradeID"];

除了以上介绍的几种对象外,还可以使用Context对象和Web.Config配置文件。

时间: 2024-10-21 22:45:44

asp.net信息保存总结的相关文章

以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)

在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?    为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示: 方法 信息量大小 保存时间 应用范围 保存位置 Application 任意大小 整个应用程序的生命期 所有用户 服务器端 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie

读取文本信息,拆分文本信息,根据拆分的文本信息保存在字典中

using System.Collections;using System.Collections.Generic;using UnityEngine; public class ObjectsInfo : MonoBehaviour { private Dictionary<int, ObjectInfo> objectInfoDict = new Dictionary<int, ObjectInfo>();//多个物品信息保存在字典中 ObjectInfo是一个类,在下面有定义

Android将应用log信息保存文件

相信大家在做应用调试的时候,不可能时时通过USB线连着电脑去查看log信息,所以,将应用的log信息保存到手机本地就很有必要了,有助我们从这些log信息中提取有用的部分,以解决一些bug,下面我把网上分享的代码中作了一些精简,作为开发者使用,个人觉得没必要通过用户上传给我们,用户上传的不需要这么庞大的log信息,仅仅那部分崩溃的log信息即可,可参考我的另外一篇blog:http://blog.csdn.net/weidi1989/article/details/7927273. 好了,废话不多

Asp.net直接保存文件到客户端

在我们的系统的编写过程中,应该有很多的时候需要客户下载文件.我第一次的做法(应该也是大部分人的做法吧?)是: 1 HttpResponse response = HttpContext.Current.Response; 2 string js = "<script language=javascript>window.open('{0}');</script>"; 3 js = string.Format(js, url); 4 response.Write(

JAVA之IO技术-将java程序的异常信息保存在文件中

package ioTest.io2; import java.io.FileNotFoundException; import java.io.PrintStream; import java.util.Properties; /* * 将应用程序的异常信息输出到指定的log文件中 */ public class ExceptionToFile { public static void main(String[] args) throws FileNotFoundException { int

如何制作一个ASP.NETMVC4信息发布网站

注册管理 ---- 用户发布管理(针对某一用户禁止发布信息) ---- 用户评论管理(针对某一用户禁止评论信息) ---- 用户发布审核管理 ---- 流程思考: 用户注册账号------------>>>账号没有重复的------------>>>注册成功 ---------------------------------------- 用户发布信息(帖子)-------->>发布后待(管理员审核) ----------------------------

利用html5的本地存储功能实现登录用户信息保存

在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了.二者用法完全相同,这里以localStorage为例. 用户名.密码保存,自动登录等,可以通过设置cookie实现,第一次登录网站后在本地计算机的中写入cookie,之后再次登录此网站查看cookie中现有的值,用cookie值进行网站登录即可.但是 cookie 不适合大量数据

4、Python将采集的信息保存

一.引言 前面小编已和各位童鞋分享了如何爬去历史天气网站的城市信息,下面将和大家分享如何将采集到的信息保存下来. 1.将采集到的信息保存在csv文件中 2.将采集到的信息保存在sql server 2014 中 二.将采集到的信息保存在csv文件中 在工程下新建一个area文件夹,由于代码简单,小编就直接贴出来了: 1 # coding = utf-8 2 3 import urllib 4 import urllib.request 5 from bs4 import BeautifulSou

Mac下,使用sshpass让iterm2支持多ssh登录信息保存

Mac下,使用sshpass让iterm2支持多ssh登录信息保存 windows里有个Xshell非常的方便好使,因为它能保存你所有的ssh登录帐号信息.MAC下并没有xshell,有些也提供这样的功能,但效果都不好.iterm2是很好的终端,但却不能很好的支持多profiles,当要管理的机器较多时,就比较麻烦了.好在它有profiles设置,只是不能保存ssh登录帐号及密码,它还提供了加载profiles时执行外部命令的功能,因此,这里就可以使用sshpass来帮它执行. 安装iterm2