客户端的状态保持方案:ViewState、隐藏域、Cookies、控件状态、URL查询参数

服务端的状态保持方案:Session(会话)、Application、Caching(缓存)、DataBase(数据库)

-》Http协议是无状态的

-》所有的状态保持的方式

-》ViewState

-》示例:使用服务器label控件,添加按钮,能实现+1吗?

查看源代码,发现生成了span,这是不能提交数据的,这究竟发生了什么?

本质:隐藏域

源代码中多了名为ViewState的hidden客户端控件,对状态进行了存储

-》属性ViewState:是继承于Control类的键值对集合类型的属性

存储的是:服务器端需要,但是又无法提交给服务器的数据

实现了服务器端控件

-》禁用ViewState:

整个页面禁用:ViewStateMode = ViewStateMode.Disabled

单个控件禁用:EnableViewState="False"

禁用后,可以试一试文本框+1,label加1是否还有效?

-》总结:因为生成了隐藏域,并且存储了太多的内容,所以不推荐使用

尽量少或不使用ViewState、服务器控件

-》Cookie(在客户端浏览器存储的文本)

-》类型HttpCookie,主要属性包括:Name(键)、Value(值)、Expires(过期时间)

-》读:Request.Cookies["键"],返回 HttpCookie对象,通过Value属性获取值

-》写:HttpCoolie cookie=new HttpCoolie(“Key”,”Value”);

Response.Cookies.Add(对象)

-》过期时间设置:cookie.Expirs=DateTime.Now.AddDay(1);

-》说明:默认有效时间为进程内有效,浏览器关闭则失效

-》传输:通过http协议的请求头、响应头,在浏览器与服务器间传输

-》示例1:记录上次访问时间

查看报文中的cookie信息

-》示例2:跨页面共享信息

-》Session(在服务器内存存储的文本)

《1》每个浏览器在第一次访问服务器时,都会由服务器创建一个Session对象

《2》在创建Session对象时,都会生成一个唯一的编号

《3》在创建Session对象时,会向浏览器中写一个Cookie,值就是Session对象的编号Session_Id

-》Session对象是HttpSessionState类型,是一个键值对集合对象

主要属性:TimeOut,SessionId,Count

主要方法:Clear()清空,Abandon()当前session立即失效

-》示例1:跨页面共享信息

查看报文,了解存储方式

-》关于SessionId属性:表示会话的标识

如果使用过Session,则客户端会以SessionId为键在Cookie中存储信息,每次请求时,这个信息都会在请求头的Cookie中被提交到服务器,服务器会认为这是一次会话

如果未使用过Session,客户端不会存储会话信息,请求头中没有关于Session的Cookie信息,则认为这是一次新的请求,会生成一个新的SessionId

-》大多数情况下,session依赖于cookie

如果cookie被禁用,则session也就不能用了

session的编号被存储到cookie中

-》缺陷:会造成服务器端压力过大等问题,推荐去session化而采用分布式缓存

-》说明:默认在ashx中是不能使用session的

接口IRequiresSessionState:并没有实现任何功能,只是告诉Application在走到第七个事件时,为一般处理程序启用session功能

-》Application对象

-》在整个应用程序运行期间,共享同一个Application对象

当应用程序池关闭时会销毁Application对象

当应用程序池启动时会创建Application对象

可以跨用户共享信息

-》键值对集合

示例:用户登录、注册

-》使用Session进行验证码判断

-》使用Session完成登录验证

-》使用Cookie记住用户名

《实例:aspnet项目复习/第三天/t3_UserLogin_Register》

ASP.NET知识总结(7.状体保持)的更多相关文章

  1. ASP.NET知识集

    ASP.NET知识集 编辑删除转载2015-06-23 16:31:55 标签:it //删除指定行数据时,弹出询问对话框 ((LinkButton)(e.Row.Cell[7].Controls[0 ...

  2. asp相关知识整理

    WWW----World Wide Web(万维网) URL----Uniform Resource Locator(统一资源定位符) HTTP----Hyper Text Transfer Prot ...

  3. 你必须知道ASP.NET知识------从IIS到httpmodule(第一篇)

    一.写在前面 最近有时间,顺便将这系列洗完,接着上文:IIS各个版本知识总结 这篇文章原本计划写到HttpHandler为止,但限于篇幅就写到httpmodule 本文有不足之处,求指正,希望我能将它 ...

  4. C#基础知识之类和结构体

    虽然项目中一直在使用类.结构体等类型,仔细琢磨,还真无法系统的说出个所以然.记录一下类.结构体.类和结构体区别 一.类 对于类,大家都特别熟悉.简单的介绍一下类的结构,然后记录一下Class需要注意的 ...

  5. 使用Enablebuffering多次读取Asp Net Core 3.0 请求体 读取Request.Body流

    原文:使用Enablebuffering多次读取Asp Net Core 请求体 使用Enablebuffering多次读取Asp Net Core 请求体 1 .Net Core 2.X时代 使用E ...

  6. 你必须知道ASP.NET知识------关于动态注册httpmodule(对不起汤姆大叔)

    一.关于动态注册的问题 很多人看过汤姆大叔的MVC之前的那点事儿系列(6):动态注册HttpModule ,其实汤姆大叔没有发现httpmodule动态注册的根本机制在哪里. 亦即:怎么动态注册?为什 ...

  7. ASP.NET知识总结(5.文件上传 文件下载)

    5.文件上传 ->说明:使用http协议只适合传输小文件,如果想传递大文件,则需要使用插件或者客户  端程序(使用ftp协议) ->客户端操作 <1>为表单添加属性:encty ...

  8. ASP.NET知识总结(3.HTTP协议详解)

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  9. ASP.NET知识总结(2.对比Get和Post提交方式)

    2.对比Get和Post提交方式 get:<1>在地址栏中通过?key1=value1&key2=value2...的方式传值 <2>传递的数据用户可以直接在url中看 ...

随机推荐

  1. 如何同时运行两个tomcat?

    两个以上,要更改端口号.1 下载tomcat的压缩包(不是安装的那种,直接解压缩就能用的)下载地址:http://tomcat.apache.org/download-55.cgi 下载好的文件名是: ...

  2. [HTTP Protocol] 200 OK (from cache)和304 Not Modified

    含义 200 OK (from cache)直接从缓存中获取的内容并未请求服务器 304 Not Modified 请求服务器并和服务器比较 If-Modified-Since,若文件未改变,服务器返 ...

  3. qingku

    # -*- coding:utf-8 -*- list1=[] list2=[] list3 = [] list4 = [] while True: inputs = raw_input(" ...

  4. c#使用正则表达式抓取a标签的链接和innerhtml

    //读取网页html string text = File.ReadAllText(Environment.CurrentDirectory + "//test.txt", Enc ...

  5. git版本控制?

    git是一个分布式的版本控制系统,版本控制系统,类似于保险箱,而我们的代码就是资产:通过对代码的有效管理可以更好的提高我们的生产效率:maven是主要是一个项目构建工具,解决的是我们个人在开发过程中的 ...

  6. <<< tomcat启动报错StandardServer.await: create[8005]

    启动tomcat的时候出现异常 严重: StandardServer.await: create[8005]: java.net.BindException: Address already in u ...

  7. <<< 三大框架简短介绍

    Struts 搞业务 Spring 主要是AOP(面向方面编程)和IOC(控制反转)它里面用到很多的设计模式Hibernate Orm映射工具 实现面向对象的方式操作数据库hibernate 封装了j ...

  8. 图解c/c++多级指针与“多维”数组

    声明:本文为原创博文,如有转载,请注明出处.若本文有编辑错误.概念错误或者逻辑错误,请予以指正,谢谢. 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更 ...

  9. 外景VR的应用

    留坑,续写. 最近在做外景的项目,被相关的帧率优化和灯光布置困扰的不要不要的.下面写下我是怎么优化帧率和对帧率的一些理解. 帧率,游戏的重要影响因素,会对玩家的手感以及视觉产生重大的影响,一般的游戏帧 ...

  10. Bootstrap学习笔记

    Bootstrap提供了一套响应式.移动设备优先的流式栅格系统. Bootstrap把一个容器或整个网页平均分成了12列. 栅格系统必须放在.container或container-fluid中 样式 ...