Object(Asp.NET核心机制内置对象汇总)
Posted taotaozhuanyong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object(Asp.NET核心机制内置对象汇总)相关的知识,希望对你有一定的参考价值。
ASP.NET有个大佬,HttpContext(在.Net Core中依然是它)Http请求的上下文,任何一个环节都是需要HttpContext的,需要的参数信息,处理的中间结果,最终的结果,都是放在HttpContext,是一个贯穿全局的对象。
所谓的六大对象,其实就是HttpContext的属性
1、Request
url参数,form参数,url地址,URLRefer,content-encoding,就是http请求提供的各种信息,后台里面都是可以拿到的context.Request.Headers["User-Agent"],包括自定义的BasicAyth,请求信息的解读是asp.net_isapi按照http协议解析出来的
2、Response
响应,response.Write,各种Result扩展就是序列化+response,所谓response都是给客户端响应内容,出了body(json/html/file),其实还有很多东西,各种header,反正都是交给浏览器去用的
3、Application
全局的东西,多个用户共享的,技术---统计下网站的请求书
4、Server
也就是个帮助类库
5、Cookie
用户登录验证,登录时写入,验证时获取,保存用户数据(记住账号;购物车,现在不放cookie里面了;访问过哪几个页面),一个用户一个cookie,也是字典式的。
存在客户端,不能有敏感信息,推荐加密,每次请求的时候,都会提交,不能太大,可以存浏览器,没有指定expiretime,关闭浏览器就丢失了,想存在硬盘就指定expiretime,想清空就修改有效期。同一个浏览器登录覆盖问题,一个浏览器cookie只有一个地方存储。可以使用谷歌浏览器的无痕模式,是不存cookie的。
6、Session
用户登录验证时,登录时写入,验证时获取,验证码,跳转到当前页,一个用户一个session,k-v形式的,字典式的。
服务器内存(sessionstateserver/SQLserver),体积不要太大,可以存敏感信息,重启丢失。一个用户一条,经常做传值(tempdata),负载均衡下session怎么处理?会话粘滞/session共享。如果浏览器禁用了cookie,还能用session吗?不能的,但是可以通过url地址传递sessionid。
浏览器关闭,登录就失效了,这是为什么呢?
cookie存在浏览器内存,关闭浏览器后,cookie就没了,再次打开分配了新的sessionid,所以没有登录,之前登录的那个session还是在内存里面的。
如果希望重新打开用户还在登录状态,就是在硬盘上存储cookie(expiretime),后台要检测cookie,认可cookie的有效性(第一次检测cookie,然后还是写入session,每次还是checksession)
协议:
就是一个约定,保证多方的信息传输(中文也是一种约定)
Http协议:超文本传输协议,也就是个文本传输的规范,浏览器/客户端遵循;服务端也遵循,那么就可以发起交互了。
Http协议理解,请求/响应
Http的请求过程,就像发一个命令,实现约定好对个,浏览器按照格式组装命令
请求行:url长度有限制
Header:有很多默认都是浏览器写的,也可以自己来,WebApi的Authorize,浏览器实际上是一个实现了Http协议标准的应用程序
Body:表单参数/上传的文件/图片(字符串),没有长度限制
C/S,客户端/服务端
客户端链接到服务器socket,发起请求,服务器完成响应,释放链接
B/S,浏览器/服务器
简单快速,灵活,任何类型都可以返还,无状态(没有长时间的链接,没有连续的链接),无状态(两次请求都没有关联,所以无法识别)
回发一个结果,实现约定好规格,服务器按照格式组装结果
响应行:StatusCode
Header:压缩格式,缓存,WebApi权限,跨域,你控制的得浏览器支持
Body:返回的主体
以上是关于Object(Asp.NET核心机制内置对象汇总)的主要内容,如果未能解决你的问题,请参考以下文章