sanfra1976 wrote:
Ciao e grazie per il tuo intervento, ma il punto è che io non ho creato un custom provider.Ma lo devo creare? se non lo creo non posso gestire le sessioni?
Se crei un custom provider poi puoi continuare ad usare i soliti comandi per le session senza toccare una linea di codice.
Se tu nel codice con le session 'standard' scrivevi:
Session("tuodati")="micio micio bau bau"
Questa session veniva salvata in memoria. Vuoi fare in modo che le session non siano salvate in memoria ma sul tuo database? Ok, scrivi un custom provider e lo configuri come quello di default nel web.config.
Ora il comando qui sopra continuerà a funzionare, ma salverà i dati sul database utilizzando il tuo custom provider.
Comodo, no?

E' questo che vorrei capire,l'esempio che tu mi hai postato con il link crea un custom provider nel web.config ed era quello che facevo in precedenza, ma adesso che sto creando tutto "ex novo" ne ho ancora bisogno oppure posso gestire il timeout delle sessioni anxche senza il custom provider?
Ad esempio io ho trovato un esempio su internet per la gestione del Timeout
if (Session.IsNewSession && Request.Headers["Cookie"] != null && Request.Headers["Cookie"].IndexOf("ASP.NET_SessionId") >= 0) {
return RedirectToAction("Index", "Home");
}
ma sinceramente non l'ho capito, devo impostare la FormAuthentication per gestire questo codice?
Per riconoscere l'utente, il server invia un cookie al browser contenente la sessionId di sessione, che non è altro che un codice univoco. Il codice qui sopra non fa altro che controllare l'esistenza di questo cookie. Se esiste c'è il redirect sulla pagina in oggetto, se non ho capito male.
Non capisco bene il tuo dubbio sul timeout. Immagino che vuoi scrivere una tua gestione del timeout. Essendo il sessionid di riconoscimento un cookie, puoi continuare ad usare l'attributo Timeout della sezione delle session nel web.config anche se usi un custom provider. Il problema è quando cancellare i dati sul database per non salvare milioni di record che non vengono più utilizzati. La cosa è facilmente risolvibile creando un trigger, per esempio, che ad ogni inserimento di una nuova session, cancella i record delle session più vecchi di n minuti/ore/giorni, oppure con un thread separato nella webapplication che periodicamente esegue la cancellazione delle session vecchie.
Ma io non userò la FormAuthentication come classe, sarà tutto gestito normalmente senza l0'usilio delle classi di supporto di asp.net
La FormsAuthentication usa anch'essa un cookie crittografato. A te, credo, non serve modificare questo comportamento. Ma le session e la formsauthentication sono due cose differenti, che hanno in comune solo il modo di riconoscere il client: cookie.
Scusa per le innumerevoli domande...
Grazie ancora
Di nulla...
Ciao