2009-09-04 15 views
3

Je veux être en mesure d'obtenir le SessionID de la session actuellement authentifié en fonction WebMethodEnableSession = false.Comment obtenir SessionID sur une demande où EnableSessionState = « false »

Je ne peux pas définir EnableSession = true sur cette demande, car une autre (course longue) demande une autre page maintient la SessionState verrouillé (EnableSessionState == "vrai" et non "Readonly").

Y at-il une manière cohérente d'obtenir le SessionID soit de la session ASP.NET cookies ou Url pour les sessions cookieless? Je peux le coder moi-même mais je préfère utiliser une fonction déjà documentée et testée.

Merci beaucoup,
Florin.

Répondre

4

Il semble y avoir aucune fonction ASP.NET qui peut le faire, alors je fait une entaille de mon propre qui fonctionne ... pour l'instant;):

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

session n'est pas disponible sur cette requête, donc HttpContext.Current.Session == null. –