HttpSessionState.SessionID 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取会话的唯一标识符。
public:
property System::String ^ SessionID { System::String ^ get(); };
public string SessionID { get; }
member this.SessionID : string
Public ReadOnly Property SessionID As String
属性值
会话的唯一标识符。
示例
下面的代码示例演示了一个 Web.config 文件,该文件将会话状态配置为使用无 Cookie 会话标识符。 有关更多信息,请参见 IsCookieless 属性。
<configuration>
<system.web>
<sessionState
cookieless="true"
regenerateExpiredSessionId="true"
timeout="30" />
</system.web>
</configuration>
注解
属性 SessionID 用于唯一标识服务器上具有会话数据的浏览器。 该值 SessionID 由 ASP.NET 随机生成,并存储在浏览器中未过期的会话 Cookie 中。 然后,该值 SessionID 随每个请求一起发送到 ASP.NET 应用程序的 Cookie 中。
如果要在 ASP.NET 应用程序中禁用 Cookie,但仍使用会话状态,可以通过在应用程序的 Web.config 文件中将 sessionState 配置元素的 属性设置为 true
cookieless
或 UseUri,将应用程序配置为将会话标识符存储在 URL 中,而不是 cookie 中。 你可以让 ASP.NET 通过为 属性指定 值UseDeviceProfilecookieless
来确定浏览器是否支持 Cookie。 还可以 ASP.NET 通过为 属性指定 值 AutoDetect 来确定是否为 cookieless
浏览器启用 Cookie。 如果在指定 时 UseDeviceProfile 支持 Cookie,或者在指定 时 AutoDetect 启用 Cookie,则会话标识符将存储在 Cookie 中;否则会话标识符将存储在 URL 中。 有关更多信息,请参见 IsCookieless 属性。
在 SessionID 服务器和浏览器之间以明文形式在 Cookie 或 URL 中发送 。 因此,不需要的源可以通过获取 SessionID 值并将其包含在对服务器的请求中来获取对另一个用户的会话的访问权限。 如果要在会话状态中存储私有或敏感信息,建议使用 SSL 加密浏览器与包含 SessionID的服务器之间的任何通信。
使用基于 Cookie 的会话状态时,ASP.NET 在使用 对象之前 Session 不会为会话数据分配存储。 因此,将为每个页面请求生成一个新的会话 ID,直到访问会话对象。 如果应用程序需要整个会话的静态会话 ID,则可以在应用程序的 Global.asax 文件中实现 Session_Start
方法,并将数据存储在 对象中 Session 以修复会话 ID,也可以使用应用程序另一部分中的代码在 对象中 Session 显式存储数据。
如果应用程序使用无 Cookie 会话状态,会话 ID 将在第一个页面视图中生成,并在整个会话中维护。