161 messaggi dal 07 settembre 2009
Ho scoperto il problema!
però non so come risolverlo =(

Il problema non risiede nel RedirectFromLoginPage ma nel PostBack.
Per scrupolo ho appena provato a commentare tutte le operazioni per effettuare l'accesso, in questo modo il tasto di login avrebbe sostanzialmente ricaricato la pagina...
Ed eccolo che l'errore è venuto fuori ancora... infatti ho riguardato l'url ed ho notato che rimanevo sulla pagina di login.aspx, quando mostra l'errore, invece di puntare a default.aspx

Tra l'altro il login funziona già come hai descritto, c'è la pagina di login.aspx che richiama la funzione di recupero e memorizzazione dati e l'url iniziale è lo stesso che hai scritto.

Dov'è che sbaglio?


Mentre per gli accessi penso di essere riuscito ad implementare il tutto correttamente. Magari cerco giusto un paio di conferme riguardo il mio operato:
- ho creato il .cs in cui ho scritto la classe derivata da RoleProvider, modificando solo GetRolesForUser, da qui la chiamata al db la faccio usando User.Identity.Name (che passo al GetRolesForUser tramite string username), giusto?
- poi ho scritto il roleManager nel web.config, mettendo lo stesso timeout del cookie di autenticazione
- infine ho inserito, sempre nel web.config, i vari tag <location> per definire gli accessi nelle varie pagine.

Effettivamente funziona tutto, ma vallo a sapere se è per pura fortuna o se ho fatto le cose come si deve ed ho capito veramente come funziona ;)


E a costo di essere ripetitivo, grazie =)


Davide
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Davide,


Ed eccolo che l'errore è venuto fuori ancora...

E' strano che un URL generato da ASP.NET produca un errore come "The system cannot find the file specified". Riesci a riprodurre questo problema anche sul tuo PC, usando il webserver di sviluppo di Visual Studio?
Non ne sono per niente convinto ma l'errore mi fa pensare sia stata fatta una configurazione particolare per l'handler che gestisce le richieste alle pagine .aspx. Se gli handler sono configurati con l'attributo resourceType settato su "File", andranno in esecuzione solo se l'URL corrisponde ad un file fisicamente esistente sul disco. Dato che l'URL viene alterato dal frammento (X(1)), ecco che la corrispondenza con il file fisico salta.
E' una cosa che controllerei per scrupolo ma non riesco a pensare al motivo per cui qualcuno voglia modificare il comportamento dell'handler per l'estensione .aspx.
Deve esserci un'altra causa che non mi viene in mente.

doppiomango ha scritto:

Mentre per gli accessi penso di essere riuscito ad implementare il tutto correttamente

Bene! Tutto corretto tranne una cosa che però penso di non aver capito.

la chiamata al db la faccio usando User.Identity.Name (che passo al GetRolesForUser tramite string username), giusto?

In che occasione chiami GetRolesForUser, passandogli User.Identity.Name? Se lo fai per visualizzare a schermo i ruoli dell'utente va bene, mentre invece se lo fai per autorizzare l'utente ad accedere alla pagina allora non ce n'è bisogno.
Quando usi il tag <authorization> nel web.config per restringere l'accesso solo ad alcuni ruoli, è ASP.NET stesso che invoca il metodo GetRolesForUser, durante la fase di autorizzazione del ciclo di vita della richiesta.

I metodi della Roles API li invochi direttamente solo se, ad esempio, hai bisogno di realizzare un'interfaccia di gestione che consenta all'amministratore del sito di gestire i ruoli degli utenti.

ciao, e prego di nuovo ;)
Modificato da BrightSoul il 29 maggio 2013 23.55 -

Enjoy learning and just keep making
161 messaggi dal 07 settembre 2009
Io l'handler non l'ho toccato qui, in alcuni siti ho lavorato con l'httphandler per avere la barra di indirizzi personalizzata (giusto per trasformare l'antipatico pagina.aspx?id=xxx in /xxx/titolopagine.aspx)
ma non è questo il caso... ho provato a mettere e togliere il tag <system.webServer> in tutti i modi ma continua a darmi errore... ed è strano perchè ho provato a creare un progetto con visual studio, usando le stesse pagine di login e default e web.config, e funziona come dovrebbe...
ma se poi metto quelle stesse pagine sul server, riottengo l'errore.


In che occasione chiami GetRolesForUser, passandogli User.Identity.Name?

mai... intendevo dire che nella funzione GetRolesForUser per recuperare i livelli di permesso dell'utente uso nell'sql l'User.Identity.Name che ottengo dalla variabile "username" che passo alla funzione (era solo per capire se avevo ben inteso il rapporto tra le Roles API e il FormAuthentication)


Poi riguardo all'utilizzo delle altri funzioni, le posso definire a mia discrezione o crearmi delle funzioni ad'hoc per l'aggiunta di ruoli dei vari utenti da parte di un amministratore o meno, giusto?


Sempre grazie =)


Davide
11.886 messaggi dal 09 febbraio 2002
Contributi
Nel server che versione di IIS hai? Il sito si trova in un'application pool che gira in modalità Integrata o Classica?

doppiomango ha scritto:

ho provato a mettere e togliere il tag <system.webServer> in tutti i modi ma continua a darmi errore

Non avendo altri indizi, per ora continua a seguire questa strada, può darsi che la configurazione sia stata fatta nel web.config di root, le cui impostazioni sono ereditate dal tuo web.config a livello di applicazione.
Non modificare nulla, vai solo nella console di IIS, seleziona il tuo sito e poi apri il "Mapping gestori". Lì in mezzo trova il gestore dell'estensione aspx (ce ne sono vari, a seconda del tipo di pipeline e delle versioni a 32 o 64 bit) e fai doppioclick. Se in "restrizioni richieste" trovi questa configurazione, allora forse hai trovato il problema.
La stessa ispezione la puoi fare anche dall'Editor di configurazione, disponibile da IIS7 in poi se hai installato l'Admin Pack.

doppiomango ha scritto:

per trasformare l'antipatico pagina.aspx?id=xxx in /xxx/titolopagine.aspx

Ok, questo puoi farlo anche con il routing di ASP.NET. Se non altro non ti costringe a mettere mano agli handler.
Qui trovi un articolo di Marco De Sanctis che ne parla.
http://www.aspitalia.com/script/1041/Utilizzare-URL-Routing-Web-Forms-ASP.NET-4.0.aspx

doppiomango ha scritto:
mai... intendevo dire che nella funzione GetRolesForUser per recuperare i livelli di permesso dell'utente uso nell'sql l'User.Identity.Name che ottengo dalla variabile "username" che passo alla funzione

ah d'accordo, allora va bene così.
Sì, hai ragione, il valore del parametro username è proprio lo stesso che si legge anche da User.Identity.Name.

doppiomango ha scritto:

Poi riguardo all'utilizzo delle altri funzioni, le posso definire a mia discrezione o crearmi delle funzioni ad'hoc per l'aggiunta di ruoli dei vari utenti da parte di un amministratore o meno, giusto?

Sì, implementa i metodi che hai ereditato da RoleProvider secondo necessità. A proprosito di crearne di nuovi, non so, magari servono ma cerca di utilizzare quelli che già ci sono. Dovrebbero servire a coprire la maggior parte delle necessità.

ciao, prego! Mi spiace per la situazione dell'errore. Si sta dilungando e non ho un'idea precisa di quale possa essere la causa.
Modificato da BrightSoul il 30 maggio 2013 22.49 -

Enjoy learning and just keep making
161 messaggi dal 07 settembre 2009
BrightSoul ha scritto:
Nel server che versione di IIS hai? Il sito si trova in un'application pool che gira in modalità Integrata o Classica?

IIS 6

Non avendo altri indizi, per ora continua a seguire questa strada, può darsi che la configurazione sia stata fatta nel web.config di root, le cui impostazioni sono ereditate dal tuo web.config a livello di applicazione.
Non modificare nulla, vai solo nella console di IIS, seleziona il tuo sito e poi apri il "Mapping gestori". Lì in mezzo trova il gestore dell'estensione aspx (ce ne sono vari, a seconda del tipo di pipeline e delle versioni a 32 o 64 bit) e fai doppioclick. Se in "restrizioni richieste" trovi questa configurazione, allora forse hai trovato il problema.

Ho trovato il mapping e l'elenco delle estensioni, ma dentro non ho trovato "restrizioni richieste".
Considerando che il sito l'ho creato io nell'iis e le impostazioni non sono state toccate, è possibile che siano "sbagliate" già dalla creazione?


ciao, prego! Mi spiace per la situazione dell'errore. Si sta dilungando e non ho un'idea precisa di quale possa essere la causa.

Non c'è problema =)
nel corso della discussione ho imparato tante cose nuove molto importanti, quindi non è di certo tempo perso. In più questo non è un problema che mi blocca il lavoro.

Sempre grazie per tutto.


Davide
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

doppiomango ha scritto:

le impostazioni non sono state toccate, è possibile che siano "sbagliate" già dalla creazione?

Non ricordo quali siano le impostastioni di default di IIS 6 ma per scrupolo verifica come è configurato l'handler per l'estensione .aspx.

doppiomango ha scritto:

Ho trovato il mapping e l'elenco delle estensioni, ma dentro non ho trovato "restrizioni richieste".

Ok, su IIS 6 l'interfaccia è un po' differente. Devi controllare se la casella che vedi in questa immagine è spuntata o meno. Verificalo per l'estensione .aspx. Se è spuntata, prova a toglierla e vedi se il problema si risolve.

doppiomango ha scritto:

ho provato a mettere e togliere il tag <system.webServer> in tutti i modi ma continua a darmi errore...

Nota a parte: ricorda che il nodo system.webServer funziona con IIS 7 o superiore. Se ad esempio volessi registrare un handler per IIS6, devi usare il nodo system.web/httpHandlers.


ciao!
Modificato da BrightSoul il 02 giugno 2013 23.24 -

Enjoy learning and just keep making
161 messaggi dal 07 settembre 2009
Avevo già trovato quella pagina ma non è spuntato "Verify that file exists"...


Davide

(il grazie è sottinteso)
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao!


Avevo già trovato quella pagina ma non è spuntato "Verify that file exists"...

Niente da fare, dunque era solo un buco nell'acqua. Potrebbe comunque trattarsi di qualcosa legato alla configurazione del server, dato che hai già testato il codice in locale e lì funziona correttamente.

Prova a vedere nei file di log di IIS se c'è qualche indizio. Si trovano nella cartella %systemroot%\system32\LogFiles. In questo momento non so cos'altro consigliarti :(

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.