首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Session.Clear(),Session.Abandon(),Session.RemoveAll()的MVC优化?

Session.Clear(),Session.Abandon(),Session.RemoveAll()的MVC优化?
EN

Stack Overflow用户
提问于 2010-08-24 03:55:39
回答 3查看 44.3K关注 0票数 29

我正在使用一些会话,这些会话应该在用户完成时终止。我偶然发现了这三个会话杀手。什么时候是使用它们的最佳时机,因为我使用会话的时间比不使用会话的时间要长。另外,有没有其他我不知道的会话终止?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-24 04:35:41

Session.ClearSession.RemoveAll是相同的;后者只是调用前者。它们会立即删除会话中存储的所有项,但会话本身仍然存在。Session_OnEnd不会触发。

Session.Abandon实际上并不会立即清除这些值,它只是将会话标记为在当前请求结束时放弃。您可以继续读取请求的其余部分的值。如果稍后在请求中写入会话,新值将在请求结束时悄悄丢弃,不会出现任何警告。Session_OnEnd在请求结束时触发,而不是在调用放弃时触发。

票数 58
EN

Stack Overflow用户

发布于 2010-08-24 03:58:09

Session.Clear不会终止会话,它会清除所有值。Session.Abandon实际上会终止会话。

看起来大部分问题都在这里解决了:In ASP.NET, when should I use Session.Clear() rather than Session.Abandon()?

票数 15
EN

Stack Overflow用户

发布于 2014-02-25 22:58:51

这里有点晚了,但我想分享@stevemegson是正确的证据,因为Session.RemoveAll内部调用了Session.Clear

代码语言:javascript
运行
复制
public void Clear()
        {
            this._container.Clear();
        }
        public void RemoveAll()
        {
            this.Clear();
        }

所以这两者完全没有区别

session.Abandon调用

代码语言:javascript
运行
复制
public void Abandon()
        {
            this._container.Abandon();
        }

它主要做的是:)..

代码语言:javascript
运行
复制
public void Abandon()
{
    this._abandon = true;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3551178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档