Ciao,
in un'applicazione web [ASP.NET/C#] ho una classe nell' APP_Code responsabile di comunicare con un server esterno tramite un Session_ID.
Tale valore, una volta inizializzato, dovrebbe essere valido "Application_Level", ossia ogni utente lo utilizzerà per richiedere il servizio esterno. La validità di tale Session_ID è di un'ora, dopodichè un nuovo valore deve essere generato.
Al fine di ottenere questo ho utilizzato due variabili statiche con scope private per mantenere il valore del Session_ID e il TimeStamp in cui è stato generato:
private static string sessionID = null;
private static DateTime? sessionCreationTime = null;
if (string.IsNullOrEmpty(sessionID))
{
string challengeID = this.getChallenge();
sessionID = this.getSessionID(challengeID);
sessionCreationTime = DateTime.Now;
}
else
{
TimeSpan diffDate = DateTime.Now - sessionCreationTime.Value;
if (diffDate.Minutes > 50 || diffDate.Hours > 0)
{
string challengeID = this.getChallenge();
sessionID = this.getSessionID(challengeID);
sessionCreationTime = DateTime.Now;
}
}
Facendo il debug dell'applicazione ho tuttavia notato se l'utente fa logout e login nuovamente il valore Session_ID viene reimpostato a null.
Quindi tali variabili rimangono vaide solo all'interno dell'i-esimo Thread utente e non a livello globale per tutti gli utenti?
Grazie per ogni risposta