ISessionIDManager.GetSessionID(HttpContext) 方法

定义

从当前 HTTP 请求的上下文中获取会话标识符。

public:
 System::String ^ GetSessionID(System::Web::HttpContext ^ context);
public string GetSessionID (System.Web.HttpContext context);
abstract member GetSessionID : System.Web.HttpContext -> string
Public Function GetSessionID (context As HttpContext) As String

参数

context
HttpContext

引用用于处理 HTTP 请求(例如,HttpContextRequest 属性)的服务器对象的当前 Response 对象。

返回

随 HTTP 请求一起发送的当前会话标识符。

示例

下面的代码示例演示了一个部分实现 GetSessionID 的方法。 如果自定义会话 ID 管理器支持无 Cookie 会话标识符,则需要实现用于在 URL 中发送和检索会话标识符的解决方案,例如 ISAPI 筛选器。

public string GetSessionID(HttpContext context)
{
  string id = null;

  if (pConfig.Cookieless == HttpCookieMode.UseUri)
  {
    // Retrieve the SessionID from the URI.
  }
  else
  {
    id = context.Request.Cookies[pConfig.CookieName].Value;
  }      

  // Verify that the retrieved SessionID is valid. If not, return null.

  if (!Validate(id))
    id = null;

  return id;
}
Public Function GetSessionID(context As HttpContext) As String _
  Implements ISessionIDManager.GetSessionID

  Dim id As String = Nothing

  If pConfig.Cookieless = HttpCookieMode.UseUri Then
    ' Retrieve the SessionID from the URI.
  Else
    id = context.Request.Cookies(pConfig.CookieName).Value
  End If    

  ' Verify that the retrieved SessionID is valid. If not, return Nothing.

  If Not Validate(id) Then _
    id = Nothing

  Return id
End Function

注解

方法GetSessionID在 和 HttpApplication.EndRequest 事件期间HttpApplication.AcquireRequestStateSessionStateModule 调用。 如果无法从 HTTP 请求检索有效的会话标识符,则返回 nullSessionStateModule如果 从 GetSessionID 方法接收 null ,它将调用 CreateSessionID 方法以获取新会话的新会话标识符。

如果实现返回 CreateSessionID 的值可能包含在 HTTP 响应或请求中无效的字符,则应使用 UrlEncode 方法在方法实现中 SaveSessionID 对会话标识符值进行编码, UrlDecode 并使用 方法在方法实现中 GetSessionID 解码会话标识符值。

适用于

另请参阅