6

Ho un'applicazione Web ASP.NET MVC 4. Funzionando localmente, funziona benissimo, ma sull'host web (che utilizza l'hosting condiviso), l'utente che ha effettuato l'accesso viene spesso disconnesso tornando alla home page. Nella maggior parte dei casi, l'utente viene disconnesso dopo aver eseguito solo alcune azioni.appartenenza ASP.NET MVC - l'utente viene disconnesso frequentemente - non so perché

L'host Web ha suggerito che la mia applicazione potrebbe utilizzare troppa memoria, ma ho usato un programma per profilare l'utilizzo della memoria e ho confermato che non stava usando una quantità eccessiva di memoria - infatti l'applicazione sembra utilizzare un frazione della memoria allocata sull'host web.

Ecco il metodo di accesso che viene utilizzato:

public static Boolean Login(string Username, string Password, bool persistCookie = false) 
    { 

     bool success = Membership.ValidateUser(Username, Password); 
     if (success) 
     { 
      FormsAuthentication.SetAuthCookie(Username, persistCookie); 
     } 
     return success; 
    } 

Nel mio host web, il timeout di autenticazione basata su form è impostato su 60 minuti, in modo che non dovrebbe essere un problema, giusto?

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="60" /> 
</authentication> 

e il mio valore di timeout lo stato della sessione è previsto anche di 60 minuti:

<sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="60"> 

Sulla base della risposta here, ho aggiunto questa linea anche, che non sembrava per risolvere il problema:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps"></machineKey> 

Qualche idea su quale potrebbe essere il problema e cosa posso fare per risolvere il problema?

risposta

1

Le sessioni non sono scadute. IIS si sta bloccando. Dato che stai usando sessioni di memoria, ogni volta che IIS si blocca, le tue sessioni sono sparite e l'utente viene disconnesso. È necessario controllare le visualizzazioni degli eventi del server e esaminare i dettagli degli errori per scoprire qual è l'errore.

0

ho impostato la mia timeout a 2880 nel timeout di autenticazione per il web.config e ho anche impostare il sessionState prima di chiudere system.web

<sessionState timeout="1440"></sessionState> 

Ciò manterrà la sessione attiva per 24 ore.

+2

Ho impostato entrambi su 60 al momento, che capisco è di 60 minuti, il che dovrebbe essere più che sufficiente. Ho aumentato il valore di timeout a un numero maggiore per vedere se ciò avrebbe fatto la differenza ... ma non è così. –

+0

Quanto tempo è trascorso prima che scada o sembra provenire da una pagina o un controller specifici? –

+0

Direi che la sessione utente rimane valida per non più di 1 o 2 minuti ... a volte più, a volte meno. Non sembra importare quale controller venga invocato. –