这几天在研究给session加密的一个模块类,此类继承自IhttpModule接口。实现的功能是确保在同一次Session会话中每次请求都来自同一客户端。因为对Request,Response和名称为ASP.NET_SessionId的Cookie理解不够透彻,在研究代码时花了很多时间都没能弄明白。下面是一些笔记。
1.ASP.NET_SessionId的值在一次Session会话的第一次请求结束后,ASP.NET保存到客户端的Cookies.
2.ASP.NET_SessionId默认保存SessionID,但如果在服务器端对ASP.NET_SessionId的值做了修改,再保存到客户端Cookie,那客户端ASP.NET_SessionId的值就可能不是SessionID.
3.同一次会话中SessionID是不会发生改变的。
4.ASP.NET_SessionId的值,必须要符合其规则,不然的话,系统会默认生成一个新的SessionID。也就是会产生一个新的会话,Session_Start方法会被调用,新的SessionID通过Reponse对象保存到名为ASP.NET_SessionId的Cookie。
5.ASP.NET_SessionId的值被更改并符合其规则的话,系统会根据ASP.NET_SessionId的值生成一个新的SessionID,系统不再随机生成新的SessinID。也就是会产生一个新的会话,Session_Start方法会被调用,但是新的SessionID并不会通过Reponse对象保存到名为ASP.NET_SessionId的Cookie,也就是客户端的ASP.NET_SessionId的值一直都不会改变。