2009-09-04 2 views
3

=「false」と私はWebMethod属性機能EnableSession = falseをで、現在認証されたセッションのセッションID を取得できるようにしたい要求にセッションIDを取得する方法。私はこの要求にEnableSession =真を設定することはできませんにEnableSessionState

、別の(実行時間の長い)ので、別のページ上の要求は(にEnableSessionState ==「真」ではない「読み取り専用」)のSessionStateがロックを保っています。

からセッションIDいずれかASP.NETのセッションクッキーやクッキーレスセッションのためのURLを得るための一貫性のある方法はありますか?私は自分でそれをコード化することができますが、私はむしろ既に文書化されテストされている関数を使用したいと思います。

ありがとう、
フロリン。

答えて

4

はこれを行うことができます何の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; 
} 
-1

HttpContext.Current.Session.SessionID

+0

セッションこのリクエストでは使用できないため、HttpContext.Current.Session == nullです。 –

関連する問題