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

我正在使用一些应该在用户完成后终止的会话。 我偶然发现了这三场杀手。 何时是使用这些的最佳时间,因为我使用会话的时间比不是。 另外,还有其他会话终止我不知道吗?

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

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

Session.Clear不会Session.Clear会话,它会清除所有值。 Session.Abandon实际上杀死了Session。

看起来这里解决了大部分内容: 在ASP.NET中,何时应该使用Session.Clear()而不是Session.Abandon()?

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

 public void Clear() { this._container.Clear(); } public void RemoveAll() { this.Clear(); } 

所以完全没有区别

session.Abandon调用

 public void Abandon() { this._container.Abandon(); } 

哪个基本上做:) ..

 public void Abandon() { this._abandon = true; }