4

我希望能够在EnableSession = false的WebMethod函数中获取当前经过身份验证的会话的SessionID

我无法在此请求上设置EnableSession=true,因为另一个页面上的另一个(长时间运行)请求使SessionState保持锁定(EnableSessionState == "True" 而不是 "Readonly")。

是否有从ASP.NET 会话 cookie或无 cookie 会话的Url获取SessionID的一致方法?我可以自己编写代码,但我宁愿使用已经记录和测试的函数。

非常感谢你,
弗洛林。

4

2 回答 2

5

似乎没有 ASP.NET 函数可以做到这一点,所以我自己做了一个 hack,它现在可以工作......

private string GetSessionID(HttpContext context)
{
  var cookieless = context.Request.Params["HTTP_ASPFILTERSESSIONID"];
  if (!string.IsNullOrEmpty(cookieless))
  {
    int start = cookieless.LastIndexOf("(");
    int finish = cookieless.IndexOf(")");
    if (start != -1 && finish != -1)
      return cookieless.Substring(start + 1, finish - start - 1);
  }
  var cookie = context.Request.Cookies["ASP.NET_SessionId"];
  if (cookie != null)
    return cookie.Value;
  return null;
}
于 2009-09-17T08:07:48.723 回答
-1

HttpContext.Current.Session.SessionID

于 2009-09-04T18:11:00.493 回答