热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于iissession详解

session基本操作添加修改session项session.add("test",datetime.now);session["test&

session基本操作

添加 修改 session项

session.add("test", datetime.now);

session["test"] = datetime.now;

添加和修改session的方法是一样的,当指定的session标识不存在时,系统会添加。当存在时系统会更新。

删除 session项

session.remove("test");

不要使用session["test"] = null; 这样只是将值设置为null!

移除所有session项

session.clear(); 或 session.removeall();

终止当前会话状态

session.abandon();

当前session项数量

session.count

当前sessionid

session.sessionid

session何时创建

所有浏览器(ie、chrome、firefox)当第一次打开浏览器时(当前未运行浏览器时),服务器端会创建新的session。

ie浏览器,当已有浏览器运行时,打开新的浏览器则会创建新的session。

而chrome、firefox当已有浏览器运行时,打开新的浏览器不会创建新的session。

当session过期后,继续访问时会创建session。当session创建时会触发 global.asax 中的session_start方法。

session何时过期

代码 session.abandon(); 引起session过期。

session超时,自动过期。

web.config 被修改,将会过期。

iis的应用程序池被回收引起。

当session过期时会触发 global.asax 中的session_end方法。

奇怪的问题:

 session.abandon(); 和 session超时自动过期的效果是一样的。引起的过期后,当刷新页面时会执行session_start 和 session_end方法。

如何避免在session_start 中添加session["sessionstartdatetime"] = datetime.now;

在调用session.abandon();后执行response.COOKIEs.add(new httpCOOKIE("asp.net_sessionid", ""));让sessionid重置。

session过期时间

在web.config中设置 分钟值。(未填写时默认是20分钟过期)

iis的会话超时设置并不起效。(设置位置如下图)

网站关联的应用程序池,的回收时间限制。经测试也不起效。但如果手动回收或设置定时回收则起效。

(如何关联网站应用程序池如下图)

如何防止session过期

可以设置较长的session过期时间。但如果设置过长可能会引起服务器负担过重。

将session模式设置为进程外或数据库中。在此就不做讨论。

一般实际情况可能是,用户在某些页面,如博客文章提交页,在编辑过程因为要很长时间。

可能在提交时发现session过期了。而导致用户信息丢失无法提交文章。

如果是这种情况,可能只想将指定页面的session时间延长。可以通过ajax定时访问后台的一空白页面。来保持session在线。

建立一个空页面updatesession.aspx

注意在page_load中添加 注意当ajax请求aspx页面时,aspx页面应设置为不允许缓存!

protected void page_load(object sender, eventargs e)
{
    response.appendheader("pragma", "no-cache");
    response.appendheader("cache-control", "no-cache, must-revalidate");
    response.appendheader("expires", "0");
}

关于sessionid

当session过期后,sessionid并未改变。

调用 response.COOKIEs.add(new httpCOOKIE("asp.net_sessionid", "")); 可设置sessionid

当设置为空时,服务器端会创建新的session。而老的session并未被释放。

当设置为其他已有的sessionid值时,此时的session将获取的是指定的session。这就是session劫持了。

如何统计当前网站session个数。

创建类

public class constants
{
    /// 
    /// 当前session个数
    /// 
    public static int sessioncount = 0;
  
    /// 
    /// 累计session个数
    /// 
    public static int sessionallcount = 0;
}

在global.asax中添加

view sourceprint?

void session_start(object sender, eventargs e)
{
    constants.sessionallcount++;
    constants.sessioncount++;
    session["sessionstartdatetime"] = datetime.now;
}
  
void session_end(object sender, eventargs e)
{
    constants.sessioncount--;
}


教程地址:

欢迎转载!但请带上文章地址^^


推荐阅读
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 本文介绍了解决mysql 5.1启动问题的方法,通过修改my.ini文件中的相关配置,包括innodb_data_home_dir和skip-innodb等,可以解决启动问题。同时还介绍了如何调整内存池来存储metadata信息。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
卓慧大美女_502
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有