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

MrM*_*MrM 28 .net c# asp.net asp.net-mvc session

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

ste*_*son 57

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

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

  • 你先生......从杀死我自己中拯救了我.我认为在我的`Login`开始时调用`Session.Abandon()`然后将数据放入,如果登录成功,那就太酷了.这次真是万分感谢.我现在可以睡觉了. (7认同)

Dav*_*sky 13

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

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