当前位置:首页 > 行业动态 > 正文

关于ASP.NET的保留值疑问解答,如何操作和管理这些保留值?

ASP.NET 保留值是指在 ASP.NET 应用程序中,用于存储和管理数据的一种机制。

在ASP.NET中,保留值的方式主要有客户端保存和服务器端保存两种,以下是对这两种方式的详细解释:

客户端保存

1、ViewState

利用场合:在对同一页的多个请求间自动保留值,多用于客户端的一些事件,典型利用场合包括页面信息重置、登录出错次数统计、Grid列排序等。

优点:不利用服务器端资源,实现简单,相对高的安全性(因为经过哈希计算和压缩,并且针对Unicode实现进行编码)。

缺点:因为ViewState存储在页面本身,所以无法存储较大的值,并且通过源文件可以看见其中的值,虽然经过哈希计算和压缩,但仍有被改动的风险。

可存储的类型:string, integer, bool, array, arraylist, hashtable以及其他可以序列化的类型。

2、HiddenField

利用场合:存储少量页面中经常改动的信息,多和客户端脚本一块使用,典型利用场合为客户端经历一系列验证之后向服务器端回发,服务器端从客户端HiddenField中获取值,进行处理。

优点:不使用服务器资源,广泛支持,实现简单。

缺点:安全性不高,因为它被包含在页面上进行发送,所以可以通过源文件看见其内容,存储结构少,仅仅支持string, integer, bool, array, arraylist等简单的数据结构,并且在其上只存放简单的单值,若要存放多值,需要额外编码,存储量少,因为它被存储在页面本身,所以无法存储较大的值,而且大的数据量会受到防火墙和代理的阻止。

3、Cookie

关于ASP.NET的保留值疑问解答,如何操作和管理这些保留值?

利用场合:存储少量页面中经常改动的信息,典型利用场合为为登陆过的网站保存登陆用户名,为用户输入提供方便,还有在一些用户自定义项目上保存用户的个性化设置。

优点:不使用服务器资源,实现简单,可配置到期时间。

缺点:大小受到限制,一般浏览器支持的最大的Cookie容量为4096字节,客户端用户可能会配置为拒绝Cookie,安全性方面,保存在客户端的信息可能会被反面用户修改或者获取,所以不应该保存敏感信息,持久性方面,保存期限受到客户端的配置影响。

4、QueryString

利用场合:将信息从一页传递给另一页的最简单的方法。

优点:不使用服务器资源,支持广泛,实现简单。

缺点:安全性方面,因为直接在URL中暴露给用户,所以有被改动的风险,容量有限,一般的浏览器都有255个字符的限制,只有在通过其URL请求页时查询字符串才是可行的选择,不能从已提交给服务器的页读取查询字符串。

服务器端保存

1、Application

关于ASP.NET的保留值疑问解答,如何操作和管理这些保留值?

利用场合:所有的请求都会需要的共有资源,由最先的一个请求率先获取之后,拿出来共享,其他的请求就不用浪费资源进行再次获取,典型利用场合为一个股市Web站点可能在一天中每5分钟从数据库获取大量的金融股票信息(也许是40MB的数据),然后将这些信息缓存在应用程序状态中,这样所有以后的查找请求都可以在应用程序状态中访问这些信息。

优点:易于实现,全局范围。

缺点:持久性方面,若保存数据的服务器端进程被强行关闭,那么数据就会丢失,所以利用Application一定要有保底的策略,耗用服务器端的内存。

2、Session

利用场合:单独的一个进程内部使用,存储单独会话的短期的、敏感的数据。

优点:易于实现,持久性可以应对IIS重启和辅助进程重启,可在多进程中使用。

缺点:耗用服务器端的内存。

3、Database

关于ASP.NET的保留值疑问解答,如何操作和管理这些保留值?

优点:安全性高、容量大、持久性强、可靠性和数据完整性好、可访问性好、广泛支持。

缺点:复杂性较高,性能可能相对较差(特别是对于大量数据操作时)。

相关问答FAQs

1、:如何在ASP.NET中同时使用ViewState和Session来保留值?

:在ASP.NET中,ViewState和Session是两种不同的状态管理技术,它们可以同时使用来保留值,ViewState主要用于在页面回发期间保持页面状态和控件状态,而Session则用于存储单个会话的短期敏感数据,要同时使用它们,只需分别设置它们的值即可,可以在Page_Load事件中根据需要将数据存储到ViewState和Session中,然后在需要的地方检索这些值。

2、:ASP.NET中的Cookie和QueryString有什么区别?

:ASP.NET中的Cookie和QueryString都是用于在客户端和服务器之间传递数据的技术,但它们有一些关键的区别,Cookie是存储在客户端浏览器上的小文本文件,用于保存用户特定的信息或偏好设置,具有较长的有效期,而QueryString则是附加在URL后面的参数,用于在页面之间传递少量的数据,QueryString的缺点是安全性较低,容易被改动,且容量有限(一般浏览器支持的最大长度为255个字符),相比之下,Cookie具有更高的安全性和更大的存储容量(尽管也有大小限制),但它们存储在客户端浏览器上,因此可能会被用户禁用或删除。