Problema di path con Authentication forms

lunedì 25 febbraio 2008 - 12.01

paquito_ita Profilo | Senior Member

Ciao,

ho realizzato un sito web con ASP.NET usando le authentication form per il login, che reindirizzino alla pagina default.aspx se le credenziali fornite dall'utente sono corrette.

Eseguendo i test in locale tutto funziona correttamente, ma quando poi eseguo l'upload del codice sul server ho dei problemi.
Dopo il login (con credenziali corrette) ottengo l'errore 404, ovvero non riesce a trovare la pagina successiva al login, che dovrebbe essere Default.aspx, ma nella barra degli indirizzo ho questo stringa "http://[indirizzo_server]/GenericErrorPage.htm?aspxerrorpath=/Login.aspx".

Di seguito riporto la parte del file web.config relativa:
<system.web> <compilation debug="true" /> <authentication mode="Forms"> <forms name=".XHTMLSite" loginUrl="Login.aspx" protection="All" timeout="20" path="/" /> </authentication> <authorization> <deny users="?" /> </authorization> <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> <xhtmlConformance mode="Strict"/> </system.web>

Il problema dipende dal path?
Il codice lo copio (lato server) in una cartella chiamata XHTMLSite, subito sotto la root (/XHTMLSite), mentre il progetto in VS 2005 ha un nome diverso. Tuttavia la gerarchia/visibilità dei file rimane identica all'interno delle cartelle.

Qualcuno puo' darmi qualche consiglio? Grazie mille

paquito_ita Profilo | Senior Member

Ciao Marco,

grazie dei consigli, sono riuscito a sistemare: in pratcia c'era un errore con una query nella pagina cui si accede dopo il Login. Certo che non era molto chiaro i messaggio fornito

Ad ogni modo ora funziona.
Ma ho un altro problema strano: a volte pur non essendo trascorsi i 20 minuti (durata della Sessione), quando navigo da una pagina all'altra ottengo un errore. Tale errore è dovuto al fatto che la variable (di sessione) userID, che setto al login, risulta null.
Ma non dovrebbe puntare direttamente al Login (usando le autentiation forms) se la variabile di sessione scade? Quel che è strano poi è che solo se svuoto la cache del Browser mi torna al login (facendo un refresh) altrimenti anche digitando l'indirizzo iniziale l'applicazione rimane dove è?

Da cosa puo' dipendere questo e come potrei risolverlo? Premetto che la variablile userID la uso IN OGNI PAGINA in quanto i serve per popolare dinamicamente dei campi con il risultato di query.

Grazie di nuovo

pozzoli.samuele Profilo | Senior Member

>Ciao Marco,
>
>grazie dei consigli, sono riuscito a sistemare: in pratcia c'era
>un errore con una query nella pagina cui si accede dopo il Login.
>Certo che non era molto chiaro i messaggio fornito

Ocio! Ricordati di nascondere di nuovo gli errori! Possono essere sfruttati per bucare il sito! Per questo sono messi di default in qeul modo...

>Ad ogni modo ora funziona.
>Ma ho un altro problema strano: a volte pur non essendo trascorsi
>i 20 minuti (durata della Sessione), quando navigo da una pagina
>all'altra ottengo un errore. Tale errore è dovuto al fatto che
>la variable (di sessione) userID, che setto al login, risulta
>null.

Molto strano. Non fai qualche session.clear da qualche parte? Non hai per caso saltato un doppio uguale in un if, per esempio (Mi pare, conoscendoti, che tu programmi in C#) e fai un test tipo if(session ("login")="") {}?

In caso tu non lo faccia, ti svelo un segreto: Se cambi un pagina questa deve essere ricompilata e spesso la sessione viene chiusa.

Se questo ti capita durante l'uso regolare, allora, è un altro discorso. Probabilmente succede qualcosa sul server. Non è che va in errore il processo del framework e viene terminato? Dice qualcosa il registro eventi?

>Ma non dovrebbe puntare direttamente al Login (usando le autentiation
>forms) se la variabile di sessione scade? Quel che è strano poi
>è che solo se svuoto la cache del Browser mi torna al login (facendo
>un refresh) altrimenti anche digitando l'indirizzo iniziale l'applicazione
>rimane dove è?

Questa cosa può succedere solo se non premi invio! ... Oppure... oppure... Sei in debug? Se si, premi di nuovo l'avvio del progetto? Altrimenti ti blocca l'esecuzione delle pagine!

>Da cosa puo' dipendere questo e come potrei risolverlo? Premetto
>che la variablile userID la uso IN OGNI PAGINA in quanto i serve
>per popolare dinamicamente dei campi con il risultato di query.
>
>Grazie di nuovo

paquito_ita Profilo | Senior Member

Ciao Marco,

il comportamento della variabile Session che pare scadere prima dei 20 minuti sembra presentarsi solo in locale (ovvero in Remoto ho fatto delle prove, ma non mi ha dato mai problemi).

Ad ogni modo onde evitare che si generino dei problemi ho aggiunto per ogni pagina le seguenti linee di codice:
if (Session["IDuser"] == null) { FormsAuthentication.SignOut(); FormsAuthentication.RedirectToLoginPage(); }

In tal modo se la variabile IDuser risulta "null", l'utente viene rediretto al login. Ovviamente ciò non dovrebbe accadere se non dopo 20 minuti, ma mi pare un comportamento migiore che l'errore di prima.

Che ne pensi?

Tale comportamento avviene al di fuori del debug, ovvero mentre testo l'applicazione in locale(ma non i debug).

Grazie di nuov dei consigli

pozzoli.samuele Profilo | Senior Member

Ribadisco, a me un coportamento del genere capita molto spesso quando capita che cambio una parte di codice in una pagina e questa deve essere ricompilata, sopratutto se è lunga.

E' l'unico caso, però!

Altrimenti proverei a controllare / riconfigurare la macchina...

paquito_ita Profilo | Senior Member

Ciao Samuele,

>Ribadisco, a me un coportamento del genere capita molto spesso
>quando capita che cambio una parte di codice in una pagina e
>questa deve essere ricompilata, sopratutto se è lunga.

alla fine penso sia proprio questo il motivo.

Grazie mille! Ad ogni modo mi documenterò anche sul ASP.NET profile, se è megliore in termini di prestazioni come è stato suggerito.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5