2013-02-11 27 views
6

In un ASP di ASP.NET ospitato in IIS 7, ha accesso alla sessione? Appare Session è nullo su HttpContext.Current.ASP.NET WebApi Sessione vs variabili statiche

Qual è la differenza tra questi due per la memorizzazione di una variabile globale?

private static Dictionary<string, string> ConnectionStrings 
    { 
     get 
     { 
      if (HttpContext.Current.Session["ConnectionStrings"] == null) 
       HttpContext.Current.Session["ConnectionStrings"] = new Dictionary<string, string>(); 

      return HttpContext.Current.Session["ConnectionStrings"] as Dictionary<string, string>; 
     } 
    } 

e

private static Dictionary<string, string> connectionStrings = new Dictionary<string, string>(); 

Dovrei usare sessione o variabili statiche per memorizzare le stringhe di connessione che vengono dinamicamente generati (lunga storia)?

risposta

6

Bene, una variabile di sessione è destinata a essere per l'utente. Una variabile statica è una variabile che verrà condivisa tra e tutti gli utenti di. Quindi, non ho idea del perché memorizzare una stringa di connessione per utente, ma se è necessario farlo, non è possibile utilizzare una variabile statica. Ora, è possibile utilizzare una variabile statica e renderla un dizionario, in cui la chiave è l'utente e il valore è quello che si desidera memorizzare. Certamente funzionerebbe.

Detto tutto ciò, è possibile simulare le sessioni con i cookie (che alla fine è ciò che fanno uso di sessioni in ogni caso (di solito)): Cfr: Accessing Session Using ASP.NET Web API