您的位置:首页精文荟萃软件资讯 → ASP.NET中的状态管理

ASP.NET中的状态管理

时间:2004/10/8 13:15:00来源:本站整理作者:蓝点我要评论(0)

我们在ASP中能够通过cookie、查询字符串、应用程序、对话等轻易地解决这些问题。现在到了ASP.NET环境中,我们仍然可以使用这些功能,只是它们的种类更多了,功能也更强大了。


  管理互联网网页主要有二种不同的方法:客户端和服务器端。


1、客户端的状态管理:


  在客户端、服务器之间的多次请求-应答期间,服务器上不保存信息,信息将被存储在网页或用户的计算机上。


  A、Cookie


  cookie是存储在客户端文件系统的文本文件中或客户端浏览器对话的内存中的少量数据,它主要用来跟踪数据设置。下面我们举例说明:假设我们要定制化一个欢迎互联网网页,当用户请求缺省的互联网网页时,应用程序会首先检查用户在此前是否已经注册,我们可以从cookie中获取用户的信息:


[c#]
if (Request.Cookies[“username”]!=null)
lbMessage.text=”Dear “+Request.Cookies[“username”].Value+”, Welcome shopping here!”;
else
lbMessage.text=”Welcome shopping here!”;


  如果要存储用户的资料,我们可以使用下面的代码:


[c#]
Response.Cookies[“username’].Value=username;


   这样,当用户请求该网页时,我们就可以方便地识别该用户。


  B、隐藏域


  隐藏域不会显示在用户的浏览器中,但我们可以象设置标准控制的属性那样设置其属性。当一个网页被提交给服务器时,隐藏域的内容和其他控制的值一块儿被送到HTTP Form集合中。隐藏域可以是任何存储在网页中的与网页有关的信息的存储库,隐藏域在其value属性中存储一个变量,而且必须被显性地添加在网页上。


  ASP.NET中的HtmlInputHidden控制提供了隐藏域的功能。


[c#]
protected System.Web.UI.HtmlControls.HtmlInputHidden Hidden1;
file://给隐藏域赋值
Hidden1.Value=”this is a test”;
file://获得一个隐藏域的值
string str=Hidden1.Value;


  需要注意的是,要使用隐藏域,就必须使用HTTP-Post方法提交互联网网页。尽管其名字是隐藏域,但它的值并不是隐藏的,我们可以通过“查看源代码”功能找到它的值。
  C、状态查看


  包括网页本身在内的Web Forms网页上的每个控制都有一个名字为ViewState的属性,它是一个自动保持网页和控制状态的内置结构,这意味着在向服务器提交网页后,我们无需采取任何措施来恢复控制的数据。
在这里,对我们有用的是ViewState属性,我们可以利用它来保存与服务器之间多次的请求-应答期间的信息。


[c#]
file://保存信息
ViewState.Add(“shape”,”circle”);
file://获取信息
string shapes=ViewState[“shape”];


  注意:与隐藏域不同的是,在使用查看源代码功能时,ViewState属性的值是不可见的,它们是被压缩和加密的。
  D、查询字符串


  查询字符串提供了一种简单而受限制的维护状态信息的方法,我们可以方便地将信息从一个网页传递给另一个网页,但大多数浏览器和客户端装置都把URL的长度限制在255个字符长。此外,查询值是通过URL传递给互联网的,因此,在有些情况下,安全就成了一个大问题。


  带有查询字符串的URL如下所示:


   http://www.examples.com/list.aspx?categoryid=1&productid=101


  当有客户端请求list.aspx后,可以通过下面的代码获取目录和产品信息:


[c#]
string categoryid, productid;
categoryid=Request.Params[“categoryid”];
productid=Request.Params[“productid”];


  注意,我们只能使用HTTP-Get提交该互联网网页,否则就不能从查询字符串获得需要的值。
  2、服务器端的状态管理


  信息存储在服务器上,尽管其安全性较高,但会占用较多的web服务器资源。


  A、Aplication对象


  Aplication对象提供了一种让所有在Web应用服务器中运行的代码访问的存储数据的机制,插入应用程序对象状态变量的数据应该能够被多个对话共享,而且不会频繁地改变。正是因为它能够被全部应用程序所访问,因此,我们需要使用Lock和UnLock对避免其中的值出现冲突。



[c#]
Application.Lock();
Application[“mydata”]=”mydata”;
Application.UnLock();


  B、Session对象


  Session对象可以用来存储需要在服务器的多次请求-应答期间和对网页的请求期间进行维护的指定对话的信息。Session对象是每个对话的存在的基础,也就是说不同的客户端生成不同的Session对象。存储在对话状态变量中的数据存在的周期较短。


  每个活动的ASP.NET对话是由一个包含合法的URL ASCII字符、长度为120位的SessionID字符串唯一确定和跟踪的。SessionID的值是由一个能够保证唯一性的算法生成的,以便对话之间不会冲突,SessionID的随意性使得我们很难猜测出一介现有对话的ID。


  根据应用程序的配置设置情况,SessionID通过HTTP cookie或修改后的URL在客户端-服务器请求之间进行传输。那么,如何设置应用程序配置的对话装备方法。


  每个web应用程序必须有一个名字为web.config的配置文件,它是基于XML文件的。下面是一个名字为sessionState的对话:



  cookieless选项的值为true或false。当其值为false(缺省值)时,ASP.NET将使用HTTP cookie来识别用户;当其值是true时,ASP.NET将随机地生成一个唯一的号码,并将它放在被请求的文件的前面,这一号码是用来识别用户的,我们能够在IE的地址栏中看到它:


  http://localhost/Management/(2yzakzez3eqxut45ukyzq3qp)/Default.aspx
  OK,下面我们再回到session对象。


[c#]
file://存储信息
Session[“myname”]=”Mike”;
file://获得信息
myname=Session[“myname”];


  C、数据库


  数据库将使我们能够存储大量的与Web应用程序中的状态相关的信息,有时,用户会使用唯一的ID频繁地访问数据库,我们可以将它存储在数据库中,在对网站中网页的多次请求中使用。
  总结


  ASP.NET中的功能和工具比ASP中更多,使我们能够更有效和高效地管理网页的状态。具体选择哪种方法与你的应用程序有关,在选择时可以考虑下面的问题:


  ·需要存储多少信息?
  ·客户端接受持久的还是内存中的cookie?
  ·希望在客户端还是在服务器端存储信?
  ·要存储的信息需要保密吗?  
  ·希望你的网页的性能如何?


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本