面试题-禁用Cookies后,Session还可以使用吗?

可以使用。禁用后,SessionId保存在URL上面。(参见下面详细说明的红色部分)

-----------关于会话状态的详细说明------------------

ASP.NET 提供了一种会话状态,该会话状态可作为 HttpSessionState 类或存储会话特定信息(仅在该会话中可见)的方法来使用。ASP.NET 会话状态将一个有限时间窗口内来自同一浏览器的请求标识为一个会话,并在该会话持续期间保留变量的值。

可以在会话状态中存储会话特定的值和对象,该会话状态对象将由服务器来进行管理并可用于浏览器或客户端设备。存储在会话状态变量中的理想数据是特定于单独会话的短期的、敏感的数据。

使用会话状态的优点为:

  • 实现简单 会话状态功能易于使用,为 ASP 开发人员所熟悉,并且与其他 .NET Framework 类一致。

  • 会话特定的事件 会话管理事件可以由应用程序引发和使用。

  • 数据持久性 放置于会话状态变量中的数据可以经受得住 Internet 信息服务 (IIS) 重新启动和辅助进程重新启动,而不丢失会话数据,这是因为这些数据存储在另一个进程空间中。此外,会话状态数据可跨多进程保持(例如在 Web 场或 Web 园中)。

  • 平台可伸缩性 会话状态可在多计算机和多进程配置中使用,因而优化了可伸缩性方案。

  • 无需 Cookie 支持 尽管会话状态最常见的用途是与 Cookie 一起向 Web 应用程序提供用户标识功能,但会话状态可用于不支持 HTTP Cookie 的浏览器。但是,使用无 Cookie 的会话状态需要将会话标识符放置在查询字符串中(同样会遇到本主题在查询字符串一节中陈述的安全问题)。

  • 可扩展性 您可通过编写自己的会话状态提供程序自定义和扩展会话状态。然后可以通过多种数据存储机制(例如数据库、XML 文件甚至 Web 服务)将会话状态数据以自定义数据格式存储。

使用会话状态的缺点为:

  • 性能注意事项 会话状态变量在被移除或替换前保留在内存中,因而可能降低服务器性能。如果会话状态变量包含诸如大型数据集之类的信息块,则可能会因服务器负荷的增加影响 Web 服务器的性能。

posted @ 2011-12-28 14:30  szny  阅读(2607)  评论(0编辑  收藏  举报