Ho una pagina di download con collegamenti a file memorizzati localmente sul server web. Tutto va bene quando un utente apre un file di testo, ma quando apre un file di Office e sceglie "Apri" dalla finestra di dialogo risultante in IE o Firefox, ASP crea una nuova sessione.Sessione ASP.MVC persa durante il download del file
Il mio metodo di controllo semplificata è:
<HttpGet()>
<AppAuthorize(Domain.Security.TransactionId.Download)>
Public Function Download(fileName As String) As ActionResult
' fileName example: C:\ProgramData\MyCompany\MyApp\SomeFile.txt
Return New FilePathResult(fileName, "application/octet-stream")
End Function
debug mostra che, non appena si fa clic su "Apri" nel browser, l'evento Global.asax Session_Start() viene attivato.
se si salva il file e quindi visualizzare in IE una nuova sessione non viene creata. È solo un problema se fai clic sul pulsante Apri come mostrato sopra.
Perché è questo e come posso prevenirlo?
Il problema di fondo è che quando la mia app vede una nuova sessione iniziata e l'utente ha un cookie di autenticazione moduli valida, assume IIS riavviato ed elimina cookie dell'utente. Quindi ogni volta che un utente apre un documento Word, viene disconnesso dall'app.
Si sta utilizzando lo stato sessione per l'autorizzazione dell'app? In tal caso, si verificano gravi problemi di sicurezza ... la sessione non dovrebbe mai essere utilizzata per motivi di sicurezza. –
No, sto utilizzando un'implementazione personalizzata di Autenticazione moduli. Il collegamento tra lo stato della sessione e la "disconnessione" è che se rilevo una nuova sessione e l'utente ha un cookie di autenticazione delle form valido, suppongo che IIS resetta ed elimini il loro auth cookie per mantenere l'integrità dei dati. Vedi http://www.netnewsgroups.net/aspnet/t4780-forms-authentication-session-expiration.aspx – nunzabar