Session,ViewState用法详细说明

数据类型:

但viewstate并不是能存储所有的.net类型数据,它仅仅支持string、integer、boolean、array、arraylist、hashtable 以及自定义的一些类型.

其他考虑

当然,任何事物都有两面性, 使用viewstate会增加页面html的输出量,占用更都的带宽,这一点是需要我们慎重考虑的. 另外, 由于所有的viewstate都是存储在一个隐藏域里面,用户可以很容易的通过查看源码来看到这个经过base64编码的值.然后再经过转换就可以获取你存储其中的对象和变量值.

其实,对于viewstate的安全性问题,asp教程.net还给我们提供了更多的选择.一般如果要保护viewstate有两种方式: 一种是防篡改,一种是加密. 一说到防篡改,我们就想起了使用散列代码. 没错, 我们可以在页面顶部加入如下代码:page enableviewstatemac=true。这样asp.net教程就会自动的在viewstate中追加一个散列码,在页面回传时,服务器根据回传的viewstate生成一个散列码,再与回传的散列码相比较,如果不对,则丢弃该viewstate,同时控件将恢复初试状态. (默认情况下asp.net是通过sha1算法而不是md5算法来生成散列,不过这个可以在machine.config里面配置machinekey validation="md5"即可),而viewstate加密就更简单了, 只要在machine.config里设置一下machinekey validation="3des"即可实现用des加密viewstate了.

使用方法

怎么在客户端,存取viewstate?

应用环境

一些与安全性无关,数据量较小,需要长时间操作的参数,应该用viewstate存取。

在webgis中,地图的各种相关状态,如zoom, center, layers, visibility等,用viewstate存取的话,就不存在session过期的问题,网页可以永远使用,甚至可以下载保存,在进行地图请求,或iframe到第三方的应用中。

 

 

asp.net中的viewstate用法  

   昨天看到一个文章,作者在自己的页面中定义了几个全局变量,类型是static,但是这样的定义会存在问题,当一个用户访问的时候不会有问题,但是当大量用户并发访问系统的时候,页面中的这些static类型的全局变量就会出现问题了,然后作者改用了session变量保存以前由static类型全局变量纪录的数据,因为session是状态量,只是和某个访问进程相关,这样就不会出现由于static类型引起的问题了。
 但是这样的话系统中的session就太多了,我总认为这样不太好,虽然每个一个session都有一个id不会冲突。asp.net引入了viewstate,可以记录同一个页面的不同postback中的一些数据值。

所以我的解决方法是:使用例如viewstate["name"]这样的形式记录以前static的全局变量,这样就可以避免这个问题了,因为我的系统是在局域网使用的,viewstate带来的多余的数据量可以忽略不计了。
asp.net viewstate用法:

asp.net中的viewstate是asp.net中用来保存web控件回传时状态值一种机制.在web窗体(form)的设置为runat="server",这个窗体(form)会被附加一个隐藏的属性_viewstate._viewstate中存放了所有控件在viewstate中的状态值.

viewstate是类control中的一个域,其他所有控件通过继承control来获得了viewstate功能.它的类型是system.web.ui.statebag,一个名称/值的对象集合.

当请求某个页面时,asp.net把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端.当客户端把页面回传时,asp.net分析回传的窗体属性,并赋给控件对应的值.当然这些全部是由asp.net负责的.

定义viewstate属性

public int pagecount

{

get{return(int)viewstate["pagecount"];}

set{viewstate["pagecount"]=value;}

}

使用viewstate的条件

如果要使用viewstate,则在aspx页面中必须有一个服务器端窗体标记(<formrunat=server>).窗体字段是必需的,这样包含viewstate信息的隐藏字段才能回传给服务器.而且,该窗体还必须是服务器端的窗体,这样在服务器上执行该页面时,asp.net页面框架才能添加隐藏的字段.

page的enableviewstate属性值为true.

控件的enableviewstate属性值为true.

提醒:

1.当存在页面回传时,不需要维持控件的值就要把viewstate禁止.

2.viewstate的索引是大小写敏感的.

3.viewstate不是跨页面的.

4.为了能包存在viewstate中,对象必须是可流化或者定义了typeconverter.

5.控件textbox的textmode属性设置为password时,它的状态将不会被保存在viewstate中,这应该是出于安全性的考虑.

6.在页面没有回传或重定向或在回传中转到(transfer)其他页面时不要使用viewstate.

7.在动态建立控件时要小心它的viewstate.

8.当禁止一个程序的viewstate时,这个程序的所有页面的viewstate也被禁止了.

9.只有当页面回传自身时viewstate才是持续的.

设置viewstate

viewstate可以在控件,页,程序,全局配置中设置.缺省情况下enableviewstate为true.如果要禁止所有页面viewstate功能,可以在程序配置中把enableviewstate设为false.

时间: 2024-08-31 01:15:57

Session,ViewState用法详细说明的相关文章

php中session用法详细介绍

在您把用户信息存储到 PHP session 中之前,首先必须启动会话. 注释:session_start() 函数必须位于 <html> 标签之前:  代码如下 复制代码   <?php session_start(); ?> <html> <body> </body> </html>上   面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID. 存储 Session 变量 存储和取回 se

session的用法具体解说

session|session   Session 对象可以使用 Session 对象存储特定用户会话所需的信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去. 当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象.当会话过期或被放弃后,服务器将终止该会话. Session 对象最常见的一个用法就是存储用户的首选项.例如,如果用户指明不喜欢查看图形,

excel中函数lookup查询函数用法详细步骤实例

  excel中lookup查找函数用法详细步骤实例,函数的工作原理是在第二个参数(区域,一般是一列)中查找第一个参数(一般为单元格值),找到首个大于第一个参数时,函数返回找到的上方位置,对应的第三个参数的值. 如果第二个参数升序排列,可以直接说是返回小于等于第一个参数的最大值. 一般情况下都需要将第二个参数升序排列,函数才有现实意义. 方法/步骤 如图红框内部是不同的身高区间对应的尺码型号. 在红框所示的单元格内输入=lookup(),当光标在括号外部闪烁时,鼠标点一下括号内部,此时光标会在括

详解ASP.NET中Session的用法_实用技巧

      当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在.当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象.当会话过期或被放弃后,服务器将终止该会话.        通过向客户程序发送唯一的 Cookie 可以管理服务器上的 Session 对象.当用户第一次请求 ASP 应用程序中的某个页面时,ASP 要检查 HTTP 头信息,查看是否有在报文中有

thinkPHP中session()方法用法详解_php实例

本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 session(name,name,value='') 参数 name(必须):如果传入数组 则表示进行session初始化,如果传入null表示清空当前session,如果是字符串则表示session赋值.获取或者操作. Value(可选):要设置的session值,如果传入null表示删除sess

PHP Session 变量用法详解与实例教程

当您运行一个应用程序时,您会打开它,做些更改,然后关闭它.这很像一次会话.计算机清楚你是谁.它知道你何时启动应用程序,并在何时终止.但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态. 通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称.购买商品等).不过,会话信息是临时的,在用户离开网站后将被删除.如果您需要永久储存信息,可以把数据存储在数据库中. 把手册抄一下,然后每个都试试然后写出来,方便自己查阅滴,

jsp编程中session的用法实例分析_JSP编程

本文实例讲述了jsp编程中session的用法.分享给大家供大家参考,具体如下: TTP协议是无状态的,即信息无法通过HTTP协议本身进传递.为了跟踪用户的操作状态,ASP应用SESSION对象.JSP使用一个叫HttpSession的对象实现同样的功能.HTTPSession 是一个建立在cookies 和URL-rewriting上的高质量的界面.Session的信息保存在服务器端,Session的id保存在客户机的cookie中.事实上,在许多服务器上,如果浏览器支持的话它们就使用cook

Session的用法

问题描述 asp.net中Session的用法我在做留言板的时候:要用户登陆后才可以留言,没登陆就提示还没登陆登陆后怎么把当前登陆的用户保存到数据库中哪个能给我一段完整的代码,谢呢喃 解决方案 解决方案二:保存到数据库中?这和Session有啥联系么?解决方案三:接楼主的地方问个问题,浏览网站的人有没有方法修改Session对象里面的值?(任何方法)解决方案四:普通人是不能修改Session的电视里面的超级高手估计能修改.解决方案五:引用2楼songjinxi123的回复: 接楼主的地方问个问题

sql replace into用法详细说明

sql replace into用法详细说明 REPLACE的运行与INSERT很相似.只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除. 注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义.该 语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行. 所有列的值均取自在REPLACE语句中被指定的值.所有缺失的列被设置为各自的默认值,