asp.net的会话和应用程序分不清楚,求高手解惑。

maliang13567 2013-03-22 03:04:40
开发asp.net网站一段时间了,最近在研究Global.asax文件,对里面的事件在什么时候触发进行了了解,但是一直搞不明白,什么是一个会话的开始,一个会话的结束。还有应用程序的开始和结束。求高手帮忙,希望能讲的好理解点。谢谢了。
...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2013-03-22
  • 打赏
  • 举报
回复
用户(客户端、浏览器)访问服务器,如果应用进程没有启动,就开启一个新进程,这时候Application开始,知道应用关闭(服务器关闭或重启)Application才关闭。 用户(客户端、浏览器)访问服务器,如果之前没有Session,就会创建一个Session;如果在一定时间内(Session超时)同一个用户没有后续访问,Session自己会关闭;如果在超时时间内同一个用户再次访问,会使用前面同一个Session,超时也重新开始计算;如果超过时间,会新建一个Session,和第一次访问一样。和浏览器没有关系,维护Session的是客户端Cookie和服务器Session State共同作用的,客户端的Cookie标识同一个用户,服务器端的Session保存数据。 相关概念建议好好看看MSDN。
ltcszk 2013-03-22
  • 打赏
  • 举报
回复
引用 5 楼 maliang13567 的回复:
引用 4 楼 Scorip 的回复:引用 3 楼 maliang13567 的回复: 引用 2 楼 ly_sl 的回复:Application的开始是只要有第一个人打开网站就触发;Application结束是最后一个人退出时触发。 Session的开始是当每一个用户打开网页时都触发;Session结束是当每一个用户退出时触发。就是一个人打开了这个网站的随意一个网页就出……
看浏览器规则是什么时候回发这个事件,也有可能不回发,session到期时也会触发这个事件
我是小李 2013-03-22
  • 打赏
  • 举报
回复
引用 5 楼 maliang13567 的回复:
引用 4 楼 Scorip 的回复:引用 3 楼 maliang13567 的回复: 引用 2 楼 ly_sl 的回复:Application的开始是只要有第一个人打开网站就触发;Application结束是最后一个人退出时触发。 Session的开始是当每一个用户打开网页时都触发;Session结束是当每一个用户退出时触发。就是一个人打开了这个网站的随意一个网页就出……
关闭网站最后的网页。
maliang13567 2013-03-22
  • 打赏
  • 举报
回复
引用 4 楼 Scorip 的回复:
引用 3 楼 maliang13567 的回复: 引用 2 楼 ly_sl 的回复:Application的开始是只要有第一个人打开网站就触发;Application结束是最后一个人退出时触发。 Session的开始是当每一个用户打开网页时都触发;Session结束是当每一个用户退出时触发。就是一个人打开了这个网站的随意一个网页就出发了 Session_Start事件,然后关闭这个网站的全部网……
Session_End(会话结束)是关闭浏览器触发 还是关闭打开网站最后的网页结束,因为现在浏览器可以有多个标签的。
Scorip 2013-03-22
  • 打赏
  • 举报
回复
引用 3 楼 maliang13567 的回复:
引用 2 楼 ly_sl 的回复:Application的开始是只要有第一个人打开网站就触发;Application结束是最后一个人退出时触发。 Session的开始是当每一个用户打开网页时都触发;Session结束是当每一个用户退出时触发。就是一个人打开了这个网站的随意一个网页就出发了 Session_Start事件,然后关闭这个网站的全部网页就出发Session_E……

 void Application_Start(object sender, EventArgs e)
    {
        //在应用程序启动时运行的代码
    }

    void Application_End(object sender, EventArgs e)
    {
        //在应用程序关闭时运行的代码

    }

    void Application_Error(object sender, EventArgs e)
    {
        //在出现未处理的错误时运行的代码

    }

    void Session_Start(object sender, EventArgs e)
    {
        //在新会话启动时运行的代码

    }

    void Session_End(object sender, EventArgs e)
    {
        //在会话结束时运行的代码。 
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式 
        //设置为 StateServer 或 SQLServer,则不会引发该事件。
    }
Session 是会话级的状态保持对象,比如说用户发开浏览器,访问某一个web站点,服务器做出响应之后,然后关闭浏览器,整个过程称之为一个会话。 上面的 Session_Start(会话开始) 和 Session_End(会话结束) 事件就是这两个时候触发的。
maliang13567 2013-03-22
  • 打赏
  • 举报
回复
引用 2 楼 ly_sl 的回复:
Application的开始是只要有第一个人打开网站就触发;Application结束是最后一个人退出时触发。 Session的开始是当每一个用户打开网页时都触发;Session结束是当每一个用户退出时触发。
就是一个人打开了这个网站的随意一个网页就出发了 Session_Start事件,然后关闭这个网站的全部网页就出发Session_End事件吗?
我是小李 2013-03-22
  • 打赏
  • 举报
回复
Application的开始是只要有第一个人打开网站就触发;Application结束是最后一个人退出时触发。 Session的开始是当每一个用户打开网页时都触发;Session结束是当每一个用户退出时触发。
  • 打赏
  • 举报
回复

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧