1

我对 asp.net 会话管理有很好的了解。
但我对此没有几个问题。

  1. 当会话 id 被创建时。当客户端使用用户名和密码登录应用程序时。或者当客户端尝试访问 default.aspx 页面时。
  2. 服务器如何服务客户端会话请求。
  3. 我们可以在js中访问会话ID吗?
  4. ASP.NET Web 表单和 ASP.NET MVC 在客户端服务器会话创建方面有什么区别吗?

任何让我对会话有非常深入了解的链接/书都会对我有所帮助。

提前致谢 !!!普拉尚

4

1 回答 1

7

我对 asp.net 会话管理有很好的了解。

我认为您在这里滥用了这些术语。ASP.NET Session是一回事,Forms Authentication完全不同的一回事。我想您在这里谈论的是表单身份验证。

1) 创建会话 ID 时。当客户端使用用户名和密码登录应用程序时。或者当客户端尝试访问 default.aspx 页面时。

当有人调用该FormsAuthentication.SetAuthCookie方法时,通常会在登录操作验证用户名和密码凭据后发生。

2)服务器如何服务客户端会话请求。

当调用该方法时,会向客户端发送一个表单身份验证 cookie,FormsAuthentication.SetAuthCookie并且该 cookie 在每个后续请求中被发送到服务器。cookie 包含允许服务器填充 IPrincipal 的用户名的加密值。

3)我们可以在js中访问会话ID吗?

不,表单身份验证 cookie 与httponly标志一起发出,这意味着客户端脚本无法访问它。

4) 在客户端服务器会话创建方面,ASP.NET Web 表单和 ASP.NET MVC 有什么区别吗?

它们是完全一样的。实际上并没有ASP.NET MVC client server session creation. 所有这些机制都来自 ASP.NET。


现在让我们假设您实际上在问题中谈到了 ASP.NET Session。我将尝试在这种情况下回答您的问题:

1) 创建会话 ID 时。当客户端使用用户名和密码登录应用程序时。或者当客户端尝试访问 default.aspx 页面时。

HttpContext.Session每当某些服务器端代码尝试使用该属性读取或写入会话时。

2)服务器如何服务客户端会话请求。

当某些服务器端脚本尝试读取或写入HttpContext.Session对象时,会向客户端发出会话 cookie。这个 cookie 会在每个后续请求中发送到服务器。cookie 只是一个 id,它允许访问存储在服务器上的会话数据。默认情况下,会话数据存储在内存中。但是您也可以将 ASP.NET 配置为将其存储在进程外或 SQLServer 中。有关各种会话状态模式的更多信息,请参阅MSDN

3)我们可以在js中访问会话ID吗?

不,ASP.NET 会话 cookie 带有httponly标志,这意味着客户端脚本无法访问它。

4) 在客户端服务器会话创建方面,ASP.NET Web 表单和 ASP.NET MVC 有什么区别吗?

它们是完全一样的。实际上并没有ASP.NET MVC client server session creation. 所有这些机制都来自 ASP.NET。

于 2013-03-29T12:01:50.120 回答