ASP.NET会话与会话状态和cookie与cookie相比较少

时间:2015-05-12 11:29:41

标签: asp.net session session-state

请帮助我,不管我的理解是否正确。

  1. ASP.NET会话存储在Web服务器上,并且没有使用任何cookie。

  2. ASP.NET如果配置为使用会话与webconfig->会话状态:那么我们可以将其配置为stateconnection或sqlconnection。

  3. ASP.NET如果配置为使用会话状态(作为stateconnection或sqlconnection),那么当用户在代码中使用会话时,将使用客户端计算机上的cookie,除非您在webconfig中指定cookieless = true

  4. 如果我们使用<sessionState cookieless="true" />,则默认情况下stateconnection设置为localhost

2 个答案:

答案 0 :(得分:4)

在许多动态网站中讨论会话时,您希望在HTTP请求之间存储用户数据(因为http是无状态的,否则您无法将请求与任何其他请求相关联),但是您不希望客户端的数据可读/可编辑,因为您不希望客户端使用该数据而不通过您的(服务器端)代码。

解决方案是存储该数据服务器端,给它一个&#34; id&#34;,并让客户端只知道(并在每个http请求时传回)该id。你去,会议实施。或者您可以将客户端用作方便的远程存储,但您可以加密数据并保留服务器端的秘密。

当然还有其他方面需要考虑,比如你不希望别人劫持其他会话,你希望会话不会永远持续但会过期,等等。

会话状态包含与服务器的特定会话(由特定客户端/浏览器/计算机)相关的信息。这是一种跟踪用户在网站上做什么的方式..跨越多个页面......在无状态的网络中。例如特定用户的购物车的内容是会话数据。 Cookie可用于会话状态。

Cookie 是一小段文字,存储在客户端的计算机上,只能由设置Cookie的网站使用。这允许Web应用程序为用户保存信息,然后在需要时在每个页面上重复使用它。 每个会话都有SessionID。会话ID是一个唯一的号码,服务器在访问(会话)期间分配给特定用户。并且默认情况下,会话ID附加到cookie,并且该cookie将在其请求/响应期间从客户端到服务器(以及服务器到客户端)共享。服务器将根据从cookie检索的会话ID识别会话。

关于 cookieless ,如果您的浏览器不支持cookie或禁用,则将使用cookieless。由于它是Cookieless,因此asp.net无法创建cookie来保存会话ID。相反,会话ID将在查询字符串中传递。

答案 1 :(得分:1)

会话:存储在服务器(内存或数据库)上,Web 应用程序中的所有页面都可以使用其中的数据。

会话状态:当用户在 Web 应用程序中导航页面时存储和检索用户的值。

Cookies:作为包含非敏感数据的文件存储在客户端,但包含用户收藏夹和首选项等数据。

Cookieless :在 URL 查询字符串中传递会话 ID,而不将其存储在 cookie 中,以防您希望用户阻止或删除 cookie。