热门标签 | 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--;
}


教程地址:

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


推荐阅读
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本文详细介绍了如何在Kendo UI for jQuery的数据管理组件中,将行标题字段呈现为锚点(即可点击链接),帮助开发人员更高效地实现这一功能。通过具体的代码示例和解释,即使是新手也能轻松掌握。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文介绍了如何通过在数据库表中增加一个字段来记录文章的访问次数,并提供了一个示例方法用于更新该字段值。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 斯特林数与幂
    参考资料:https:www.luogu.com.cnblogchtholly-willemsolution-p5408https:blog.csdn.netguizhiyuart ... [详细]
  • 本文介绍如何使用RFC 5545重复规则在C#中实现类似于Google日历中的事件安排功能,特别是针对每月特定工作日的事件。我们将探讨如何精确设置这些规则以确保事件按照预期频率和日期触发。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本文介绍了如何在React和React Native项目中使用JavaScript进行日期格式化,提供了获取近7天、近半年及近一年日期的具体实现方法。 ... [详细]
  • Servlet过滤器入门:实现与配置
    本文介绍如何在Java Web应用中实现和配置Servlet过滤器,通过实现`javax.servlet.Filter`接口来创建过滤器,并详细说明其在web.xml文件中的配置方法。 ... [详细]
  • 深入解析Spring Boot自动配置机制
    本文旨在深入探讨Spring Boot的自动配置机制,特别是如何利用配置文件进行有效的设置。通过实例分析,如Http编码自动配置,我们将揭示配置项的具体作用及其背后的实现逻辑。 ... [详细]
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社区 版权所有