ASPnet4高级程序设计【状态管理】_第1页
ASPnet4高级程序设计【状态管理】_第2页
ASPnet4高级程序设计【状态管理】_第3页
ASPnet4高级程序设计【状态管理】_第4页
ASPnet4高级程序设计【状态管理】_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、状态管理本节内容视图机制隐藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递web应用无状态特点客户端服务器端请求生成对象数据处理对象数据处理结果返回销毁对象再次请求web应用无状态特点基于http协议的每次访问完后,都将与服务器端断开连接能够同时处理多个请求(有状态的情况下,服务器内存可能会崩溃)但给数据处理带来了不便(新的请求可能会使用上一次请求的处理的结果)a状态管理提供了多种机制根据存储的数据、安全性等因素考虑选择什么机制可多种机制共存本节内容视图机制隐藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递

2、视图机制单个页面保存数据第一选择在针对页面的连续请求过程中,视图数据会在客户端与服务器端不断的传递体现形式服务器端:键值对的形式客户端:加密后的字符串,保存在隐藏域中操作方式服务器端:viewstate“key”客户端:无法修改视图机制示例页面请求数viewstate“count”视图与对象序列化类对象序列化类必须有serializable特性serializable所有的基类必须具有serializable特性所有的属性必须是可序列化的数据类型,若不想序列化某个属性,需要标识nonserializableviewstate“key”=对象;对象视图的示例serializableclass c

3、ustompublic string firstname;publis string lastname;custom c=new custom();viewstate“custom”=c;视图机制优缺点优点在页面访问过程中可以保持数据状态缺点增加了访问负载什么情况下,考虑不使用视图核心数据被多个页面使用的数据存储的信息量大服务器控件与视图服务器控件很多属性都是基于视图的页面访问过程中,会加载视图a禁用视图enableviewstate禁用页面视图禁用控件视图viewstatemode视图安全默认情况下,视图状态数据存储在页上的隐藏字段中,并使用 base64 编码机制进行编码可能被恶意用户截获

4、和读取为了保证安全,可以对视图数据进行加密viewstateencryptionmode=true对视图状态数据进行加密可能会影响应用程序的性能。因此,如不需要,请不要使用加密.本节内容视图机制隐藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递隐藏域asp.net 允许您将信息存储在 hiddenfield 控件中,隐藏域在浏览器中不以可见的形式呈现当向服务器提交页时,隐藏域的内容将在 http 窗体集合中随同其他控件的值一起发送恶意用户可以很容易地查看和修改隐藏域的内容。请不要在隐藏域中存储任何敏感信息或保障应用程序正确运行的信息本节内容视图机制隐

5、藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递cookie机制简介cookie 保存在客户端设备上(客户端浏览器会话的内存或磁盘),当浏览器请求某页时,客户端会将 cookie 中的信息连同请求信息一起发送服务器可以读取 cookie 并提取它的值cookie 与网站关联,而不是与特定的页面关联常用于保存当前用户信息,以指示该用户已经在您的应用程序中进行了身份验证cookie使用示例输出cookie到客户端在服务器端访问cookie多值多值 cookieresponse.cookiesuserinfousername = patrick; resp

6、onse.cookiesuserinfolastvisit = datetime.now.tostring();response.cookiesuserinfo.expires = datetime.now.adddays(1); httpcookie acookie = new httpcookie(userinfo); acookie.valuesusername = patrick; acookie.valueslastvisit = datetime.now.tostring(); acookie.expires = datetime.now.adddays(1); response.

7、cookies.add(acookie); 控制控制 cookie 的范围的范围默认情况下,一个站点的全部 cookie 都一起存储在客户端上,而且所有 cookie 都会随着对该站点发送的任何请求一起发送到服务器可以通过两种方式设置 cookie 的范围:将 cookie 的范围限制到服务器上的某个文件夹,这允许您将 cookie 限制到站点上的某个应用程序。 将范围设置为某个域,这允许您指定域中的哪些子域可以访问 cookie。 控制控制 cookie 的范围的范围将将 cookie 限制到某个文件夹或应用程序限制到某个文件夹或应用程序设置设置cookie的的path属性属性限制限制 co

8、okie 的域范围的域范围设置设置cookie的的domain属性属性可通过此设置创建可在多个子域间共享的可通过此设置创建可在多个子域间共享的 cookie修改或删除cookiecookie的修改删除操作,都是创建新的cookie覆盖旧cookie删除cookie:创建一个与要删除的 cookie 同名的新 cookie,并将该 cookie 的到期日期设置为早于当前日期的某个日期修改或删除子键修改删除cookie注意事项安全性恶意用户可通过多种方法访问 cookie 并读取其中的内容。建议不要将敏感信息(如用户名或密码)存储在 cookie 中。cookie 以明文形式在浏览器和服务器间发送

9、,任何可以截获 web 通信的人都可以读取 cookie。可以设置 cookie 属性,使 cookie 只能在使用安全套接字层 (ssl) 的连接上传输。大小限制大多数浏览器对 cookie 的大小有 4096 字节的限制,尽管在当今新的浏览器和客户端设备版本中,支持 8192 字节的 cookie 大小已愈发常见禁用有些用户禁用了浏览器或客户端设备接收 cookie 的能力,因此限制了这一功能本节内容视图机制隐藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递session介绍asp.net 应用程序启用会话状态时,将检查应用程序中每个页面请求是否

10、有浏览器发送的 sessionid 值。如果未提供任何 sessionid 值,则 asp.net 启动一个新会话,然后将该会话的 sessionid 随响应一起发送到浏览器会话由一个可以使用 sessionid 属性读取的唯一会话标识符标识默认情况下,sessionid 值存储在 cookie 中,但也可以配置应用程序,将 sessionid 值存储在 url 中session状态使用的范围:使用同一个客户端(浏览器实例)访问同一个应用程序的所有页面session使用session“key”=value;会话变量集合按变量名称或整数索引来进行索引仅需通过名称引用会话变量即可创建会话变量,无需

11、声明会话变量或将会话变量显式添加到集合中默认情况下,会话变量可以为任何有效的 .net 类型session示例用户登录信息session生命周期默认情况下,session 的超时时间时间(timeout)是20分钟,用户保持连续20分钟不访问网站,则session被收回可在程序中进行设置: session.timeout = 30;在配置文件中设置超时时间: sessionstate配置节本节内容视图机制隐藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递查询字符串通过url地址传递数据的方式格式:?key1=value1&key2=value2访问:

12、request.querystring“key名称”查询字符串使用注意在查询字符串中传递的信息可能会被恶意用户篡改。不要依靠查询字符串来传递重要的或敏感的数据大多数浏览器和客户端设备会将 url 的最大长度限制为 2083 个字符,所以不能通过查询字符串传递大数据信息本节内容视图机制隐藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递应用程序状态应用程序状态是可供 asp.net 应用程序中的所有类使用的数据储存库它存储在服务器的内存中与特定于单个用户会话的会话状态不同,应用程序状态应用于所有的用户和会话应用程序状态用于存储那些数量较少、不随用户的变化

13、而变化的常用数据应用状态使用应用程序状态存储在 httpapplicationstate 类的实例中。此类公开对象的键值字典httpapplicationstate类通常通过 httpcontext 类的 application属性访问在web窗体中,直接通过page.application访问application使用示例网站访问计数器application与session比较相同点都是存储在服务器端不同点application是全局的存储机制,可以在所有页面中访问session是局部的(即针对每个会话),只能在自己的会话中访问应用状态使用注意由于应用程序状态存储在内存中,因此比将数据保存到

14、磁盘或数据库中速度更快。但是,在应用程序状态中存储较大的数据块可能会耗尽服务器内存由于应用程序状态存储在服务器内存中,因此每当停止或重新启动应用程序时应用程序状态都将丢失应用程序状态不能在为同一应用程序服务的多个服务器间应用程序状态采用自由线程模式,即应用程序状态数据可由多个线程同时访问。因此,必须确保通过包含内置同步支持,以线程安全的方式进行应用程序状态数据更新本节内容视图机制隐藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递配置文件配置文件是可以按需要更改的 xml 文件可以使用配置文件来保存应用程序运行环境信息更改设置,而不必重编译应用程序本节内容视图机制隐藏域cookie机制session机制querystring机制应用程序状态配置文件跨页传递ispostback指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问如果是为响应客户端回发而加载该页,则为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论