2013-03-29 60 views
1

我对asp.net会话管理有很好的理解。
但我对此有几点疑问。asp.net会话技术

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

任何有关会话的深入思考的链接/书籍都会对我有所帮助。

在此先感谢! Prashant

回答

7

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

我认为你滥用这里的条款。 ASP.NET Session是一回事,Forms Authentication完全不同的东西。我想你在这里正在谈论表单身份验证。

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

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

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

FormsAuthentication.SetAuthCookie方法被调用并且此cookie在每个后续请求中被发送到服务器时,表单身份验证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会话在你的问题。我将尝试在这种情况下回答您的问题:

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

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

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

当某些服务器端脚本尝试读取或写入HttpContext.Session对象时,将会话cookie发送到客户端。这个cookie会在每个后续请求中发送到服务器。该cookie只是一个允许访问存储在服务器上的会话数据的标识。默认情况下会话数据存储在内存中。但是,您也可以配置ASP.NET以将其存储在proc或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。

+0

感谢您的纠正Darin – Prashant

+1

哇!非常好的解释....... – Niventh