2012-05-24 72 views
1

我已经在几个.com上工作过,我们从未使用过内置的ASP.NET会话状态。它一直在检查cookie是否有效的会话检查,并将会话与数据库或其他方式进行比较,但最终它是cookie。我们没有使用任何基于ASP.NET的会话对象。MVC混乱的会话状态

那么为什么人们使用MVC的所有这个会话状态服务器废话?我从来没有见过它的需要。

+0

不能说我见过MVC&会话一起提到,但那么我没有看过。我很久没有使用会话状态了,并且会同意你的看法。虽然有用,但请关掉它,因为,你知道,也许有一天,谁知道。 –

+0

我尽可能地避免会话状态,但在有些时候它不会有用吗?例如,如何在不使用会话状态的情况下执行此操作:“跟踪用户查看的最后20个产品。在侧栏小部件中,根据最近查看的20个产品显示类似产品的建议。”有没有办法做到这一点没有会话状态? –

回答

4

我从来没有见过它的需要。

我也是。我从来没有在我的web应用程序中使用ASP.NET会话状态。我更喜欢用REST风格来设计它们,而不是引入状态。其中一个最重要的东西我在任何Web应用程序做的就是添加下面一行在web.config中,以确保任何未来开发商不使使用会话的错误:

<sessionState mode="Off" /> 

我猜的人正在使用它可以简化跨多个请求的一些易失性数据的存储。

+0

yea看到这是什么让我感到困惑。我曾经在serveral .com上工作,我们不曾使用内置的asp.net会话对象。但是我仍然看到一些人诉诸于他们在MVC应用程序中唯一知道的事情,那就是使用IMO一个不需要的沉重会话状态对象/框架。你只需要形式auth票和cookie ... – PositiveGuy

0

如何处理没有活动的会话超时需求? Cookie只是不太安全。

+0

我认为OP的说没有会话,没有会话超时担心,因为该应用程序不是会话感知。如果你的意思是身份验证超时,那么auth cookie负责处理。你需要解释你的意思是“饼干只是不太安全” –

+0

饼干不是100%安全,没有任何东西。你如何定义这个问题是你在传入的请求中检查IP,并将它与auth cookie中的内容进行比较......如果它们匹配,则认为没有人攻击你的cookie会话。但这个曲奇并不安全,因为我已经看到5个.com使用cookies,并且这是在电子商务或任何公共网站上的常用和首选方式,如果你知道你是什么正在做。在我看来,使用MS提供的会话状态的人从来没有经历过真正的.com或高流量站点&亲方式来做到这一点 – PositiveGuy

2

ASP.NET确实有一个由SQL会话状态索引的会话ID,该会话ID是根据Cookie的会话ID进行检查的。 ASP.NET还允许您将会话存储在内存中(默认)。 MVC中提供了相同的构建块。

基本上你已经实现了(“总是检查一个有效的会话检查cookie,会话与数据库或其他方式进行比较,但最终它是cookie。”)正是你所希望的poohing!没有意义重新发明轮...

至于具体的用例,你可以用它来处理任何需要坚持的状态。在你的具体情况下,只是检查你为什么存储cookie和查找数据库 - 这正是你会使用会话状态(SQL或内存)

+0

我非常同意。我认为人们会口口相传,因为有些人历史上曾经滥用过它。用例很容易找到,当你需要它时,不需要像OP那样重新创建它。 –