2010-11-05 19 views
5

Est-il possible d'obtenir un objet de session à partir d'un sessionID? J'ai un petit projet utilisant un téléchargement Flash pour permettre à un utilisateur de télécharger son fichier sur le serveur, mais le problème est que Flash a une erreur lors de l'envoi de la session et du cookie (dans Firefox ou Chrome, mais pas IE), donc j'ai trouvé une solution pour résoudre ce problème: envoyer le sessionID via Flash au serveur, et sur le serveur, décoder sessionID à l'objet de session, mais je ne sais pas comment le faire. J'utilise ASP.NET et C#.Obtient l'objet de session de sessionID dans ASP.Net

Quelqu'un peut-il me conseiller sur ce qu'il faut faire?

Répondre

4

Le lien proposé par Moo-Juice ne fonctionne plus.

J'ai utilisé le code fourni dans cette page:

http://snipplr.com/view/15180/

Il a travaillé comme un charme.

Si le lien deviendrait brisé, voici le code:

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    try 
    { 
     string session_param_name = "ASPSESSID"; 
     string session_cookie_name = "ASP.NET_SESSIONID"; 
     string session_value = Request.Form[session_param_name] ?? Request.QueryString[session_param_name]; 
     if (session_value != null) { UpdateCookie(session_cookie_name, session_value); } 
    } 
    catch (Exception) { } 

    try 
    { 
     string auth_param_name = "AUTHID"; 
     string auth_cookie_name = FormsAuthentication.FormsCookieName; 
     string auth_value = Request.Form[auth_param_name] ?? Request.QueryString[auth_param_name]; 

     if (auth_value != null) { UpdateCookie(auth_cookie_name, auth_value); } 
    } 
    catch (Exception) { } 
} 
void UpdateCookie(string cookie_name, string cookie_value) 
{ 
    HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name); 
    if (cookie == null) 
    { 
     HttpCookie cookie1 = new HttpCookie(cookie_name, cookie_value); 
     Response.Cookies.Add(cookie1); 
    } 
    else 
    { 
     cookie.Value = cookie_value; 
     HttpContext.Current.Request.Cookies.Set(cookie); 
    } 
}