puoi usare la Dictionary Session per le variabili di sessione e la Application per le variabili globali all'intera applicazione (Dal messaggio sinceramente non è chiaro cosa tra le due ti serve).
codice:
Session["IDPW"] = Request["IDPW"];
l'oggetto application è simile ma è meglio usare lock e unlock:
codice:
Application.Lock();
Session["IDPW"] = Request["IDPW"];
Application.Unock();
Puoi rendere il tutto strongly typed e thread-safe creando una classe con proprietà static e wrappando tutto dentro i get e set
codice:
public class CustomApplication //o CustomSession il discorso nn cambia
{
static CustomApplication()
{
Application["IDPW"] = 0;//valore di default
}
public static int IDPW
{
get
{ //Se non avessi inizializzato la variabile nel costruttore, magari perche non è un tipo value
//allora qui ci sarebbe stato un bell if (Application["IDPW"] == null) Application["IDPW"] = new ecc. ecc.
return (int)Application["IDPW"];
}
set
{
Application.Lock();
Application["IDPW"] = value;
Application.Unlock();
}
}
}
a questo punto non ti resta che usare in giro per la tua appplicazione la classe CustomApplication (o CustomSession).
Se ti crei questa classe in un namespace diverso e intendi usarela anche nelle aspx oltre che nel code behind puoi rendere il namespace visibile dal web.config:
codice:
<system.web>
<namespaces>
<add namespace ="Nome_Namespace" />
</namespaces>
</pages>
</system.web>