Session.Clear(),Session.Abandon(),Session.RemoveAll()的MVC优化?
我正在使用一些应该在用户完成后终止的会话。 我偶然发现了这三场杀手。 何时是使用这些的最佳时间,因为我使用会话的时间比不是。 另外,还有其他会话终止我不知道吗?
Session.Clear
和Session.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; }