【问题标题】:How the session work in asp.net?会话如何在 asp.net 中工作?
【发布时间】:2011-11-10 01:39:35
【问题描述】:

请任何人建议我会话在 asp.net 中的实际工作方式? 我在部分课程中感到困惑,想简要了解一下,所以请指导我

【问题讨论】:

标签: session asp.net-3.5


【解决方案1】:

ASP.NET 使用 cookie 来跟踪用户。当您第一次尝试向会话写入内容时,会将 cookie 发送到客户端,例如 ASP.NET_SessionId。此 cookie 由客户端在后续请求中发送。由于这个cookie,服务器能够识别客户端并写入/读取相关的会话数据。请务必注意,此 cookie 不是持久性的(不会在浏览器重新启动后继续存在),并且会与 HttpOnly 标志一起发出,这意味着客户端脚本无法访问它。

除了 cookie,您还可以将 ASP.NET 配置为使用隐藏字段或将会话 ID 附加到每个请求的查询字符串中。

所以会话背后的基本思想是实际数据存储在服务器的某个位置,客户端在每个请求中发送一些 ID,以便服务器可以知道在哪里可以找到它的数据。

默认情况下,实际会话数据可以存储在 3 个位置:

  • In-Proc:会话存储在应用程序的内存中(最快,但如果服务器场中有多台服务器,这将不起作用)
  • Out-of-Proc:数据存储在安装了 State 服务的单独服务器中(数据存储在单独机器的内存中,这意味着多个 Web 服务器可以在一个 Web 场中工作)
  • SqlServer:数据存储在 SQL Server 中(它是最慢但最可靠的,因为会话数据存储在 SQL Server 数据库中,并且可以在会话服务器崩溃时提供服务,而 Out-Of-Proc 不是这种情况)
  • 自定义实现:由于 ASP.NET 的可扩展性,您可以编写自己的会话提供程序并将数据存储在您喜欢的任何位置。

这是 MSDN 上的一篇很好的文章,它探讨了 ASP.NET Session State。

【讨论】:

  • 我有一个疑问,可以说,我刚刚在 asp.net Mvc 应用程序中创建了一个 AboutUs 页面,它只返回一个 View ,这是否会为用户的请求创建一个新会话还是 Session 是使用我们应用程序中的代码创建的,例如表单身份验证?
【解决方案2】:

会话:[存储在服务器端]

1.如果您创建会话,则服务器存储您的会话数据并创建一个 SessionID 。 [Session ID 存储在 Server 的 State Provider 中的会话数据]

2.然后服务器将SessionID返回给客户端的浏览器。

3.然后你可以将返回的SessionID存储在Cookie中。

4. 带有 SessionID 的后续请求可以访问服务器数据。

注意:会话仅适用于当前浏览器会话和特定用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2010-11-22
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多