4

EnableSession = falseであるWebMethod関数で、現在認証されているセッションのSessionIDを取得できるようにしたいと考えています。

このリクエストでEnableSession=trueを設定できません。これは、別のページの別の (実行時間の長い) リクエストがSessionStateをロックしたままにしている (EnableSessionState == "True" ではなく "Readonly") ためです。

ASP.NET セッション Cookieまたは Cookie のないセッションのURLからSessionIDを取得する一貫した方法はありますか? 自分でコーディングすることはできますが、既に文書化およびテストされている関数を使用したいと考えています。

どうもありがとう、
フローリン。

4

2 に答える 2

5

これを実行できる ASP.NET 関数はないようです。そのため、独自のハックを作成しました。これは動作します...今のところ ;):

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 に答える