8 messaggi dal 12 aprile 2004
Ciao,
Sto tentando di utilizzare questo sistema di autenticazione, o meglio quello che hai proposto nel numero 94 del giugno 2005 su INTERNET MAGAZINE (alla quale sono abbonato), ma purtroppo a parte qualche errore di battitura che ho trovato mi ritorna sempre un errore del tipo:
-System.NullReferenceException: Object reference not set to an instance of an object- dovuto al file global.asax questo parte dello stack trace:
ASP.global_asax.Application_AuthenticateRequest(Object sender, EventArgs e) in C:\Inetpub\wwwroot\global.asax:8

e questo il file global.asax

<%@ Import namespace="System.Security"%>
<%@ Import namespace="System.Security.Principal"%>
<SCRIPT RUNAT="SERVER">
' l'utente cerca di autenticarsi

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
' carico l'utente e recupero il ticket
Dim identity As FormsIdentity = CType(HttpContext.Current.User.Identity, FormsIdentity)
Dim ticket As FormsAuthenticationTicket = identity.Ticket
' carico i roles dal ticket del cookie
Dim roles As String() = ticket.UserData.Split(";")
' sovrascrivo User con un nuovo GenericPrincipal
HttpContext.Current.User = New GenericPrincipal(identity, roles)
End Sub

</SCRIPT>

Puoi aiutarmi a trovare l'errore ?
l'ho scritto io questo codice, per più in VB?

scherzi a parte, l'errore è che se l'utente non è autenticato FormsIdentity è nullo, quindi dopo Dim identity, sulla riga successiva, mettici:

if not FormsIdentity is Nothing then

con l'end if che arriva fino a End Sub.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
8 messaggi dal 12 aprile 2004
Ma Daniè vabbe che odi il VB però sei un disastro la soluzione che mi hai dato ho dovuto modificarla perchè l'accettasse perchè come dicevi tu genera questo errore " 'FormsIdentity' is a type and cannot be used as an expression " e quindi ho risolto così:
...
Dim identity As FormsIdentity
If Not identity Is Nothing Then
identity = CType(HttpContext.Current.User.Identity, FormsIdentity)
...

Ma l'applicazione non funziona proprio o meglio adesso gira ma non riconosce i ruoli e non da l'accesso alla pagina protetta.
Ma come devo fare con te ? così non riuscirò mai a imparare qualcosa è una settima che ci sbatto la testa.
Ciao
Ps non ho trovato la faccina con il bastone altrimenti l'avrei usata
mobydik65 ha scritto:
Ma Daniè vabbe che odi il VB però sei un disastro la soluzione che mi hai dato ho dovuto modificarla perchè l'accettasse perchè come dicevi tu genera questo errore " 'FormsIdentity' is a type and cannot be used as an expression " e quindi ho risolto così:


è ovvio che per FormsIdentity intendessi la variabile che contiene l'istanza del tuo oggetto FormsIdentity, non ha granchè senso verificare che un tipo sia nullo
e non odio il VB, semplicemente non lo uso per mille motivi, se posso scegliere altro.

Ma l'applicazione non funziona proprio o meglio adesso gira ma non riconosce i ruoli e non da l'accesso alla pagina protetta.


segno che con molta probabilità non li assegna correttamente, perchè, ad esempio, non sono estratti dal database. prova a verificarli su una pagina con questo esempio

Ma come devo fare con te ? così non riuscirò mai a imparare qualcosa è una settima che ci sbatto la testa.


fammi capire, tu non riesci a farlo, con tanto di esempi, e la colpa sarebbe mia? ROTFL

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
8 messaggi dal 12 aprile 2004
Allora la soluzione è questa:
la condizione da mettere nel global.asax è
...
If Request.IsAuthenticated Then
....
Comunque spero che non te la sia presa per la mia risposta il tono che volevo dare era essenzialmente amichevole e scherzoso,però quello che ti dico ora deve essere per te una critica costruttiva non certo buttata li tanto per dire.

fammi capire, tu non riesci a farlo, con tanto di esempi, e la colpa sarebbe mia?

è ovvio che se faccio queste domande per te ovvie è perchè sto cercando di imparare, ma se io compro una rivista da dove prendere un esempio e questo contiene errori sia di sintassi che concettuali spero converrai che io non posso imparare perchè se sono in grado di capire subito perchè non funziona è evidente che non ho neanche bisogno del tuo esempio perchè sono in grado di farmelo da me quindi credo che un po' di responsabilità sia anche tua che non testi gli script che pubblichi; intendiamoci una cosa è il gratuito che se non funziona pazienza ci si aiuta se si ha tempo e voglia e non deve esserci nessuna pretesa ma se io pago qualcosa se permetti mi aspetto che funzioni altrimenti la porto indietro e chiedo il rimborso.
Comunque per il momento continuerò a leggere i tuoi articoli, ti chiedo solo se puoi avere un ochhio di riguardo per noi ignoranti non puoi partire con un introduzione per principianti e già a metà articolo precipitare ad un livello per esperti dando per scontato un sacco di cose.
Suvvia Daniele un pò di sana autocritica e un pò meno orgoglio...

Amichevolmente ti saluto
mobydik65 wrote:
è ovvio che se faccio queste domande per te ovvie è perchè sto cercando di imparare, ma se io compro una rivista da dove prendere un esempio e questo contiene errori sia di sintassi che concettuali spero converrai che io non posso imparare perchè se sono in grado di capire subito perchè

l'unico errore è l'aver dimenticato una parentesti graffa e quell'if, perchè ho voluto usare VB.NET e mi sono dimenticato di "tradurre" la riga di controllo. altri errori non ne vedo, ammesso che la versione che è andata online sia fedele rispetto a quanto ho inviato, dato che c'è sempre un processo di review dell'articolo e non posso essere sicuro che qualcosa non sia stata tagliata/cancellata/aggiunta per esigenze editoriali. ovvio che li testo gli script, ma può capitare che ci siano errori dovuti a 200 mila motivi, come nel global.asax di questo esempio che è diventato VB.NET all'ultimo momento perchè era l'unico pezzo in C#. la parentesi è rimasta lì proprio per questo motivo ed ovviamente non me ne sono accorto perchè ho dato per scontato di essere ancora capace di scrivere codice in VB.NET, altrimenti non sarei stato così scemo da lasciarla  evidentemente, invece, faccio meglio a non usare VB.NET

spero che chi abbia letto un articolo del genere, che per inciso non è pensato proprio per principianti a prescindere dal titolo con cui sarà stato pubblicato, che di sicuro è molto allettante  , riesca a capire che in VB.NET una parantesi graffa non ci sta bene e l'abbia rimossa come hai fatto tu

per l'if in effetti è un po' meno semplice, ma oltre a dispiacermi per averlo dimenticato, non saprei cosa fare.

infine, visto che ti sei lanciato in un discorso ben più complesso, secondo me, su ciò che tu come lettore possa pretendere da una rivista, vorrei ricordarti che in un articolo di 15 mila battute si danno per scontate un sacco di cose, spesso anche troppe, per motivi vari.
tu come lettore non puoi certo pretendere che quello che trovi allegato ad una rivista da 5 Euro ti risolva tutti i problemi solo perchè l'hai pagata. e soprattutto non puoi aspettarti che tutti gli articoli siano pensati per il tuo livello.
è una rivista "generica", contiene argomenti di tutti i livelli, dal principiante all'esperto, e questo articolo anche se comincia soft da' per scontato che tu conosca abbastanza bene ASP.NET, perchè parla di un tema (la security e la protezione delle applicazioni) che di sicuro non affronti senza sapere cosa c'è prima. e non è poco quello da sapere, come avrai notato.

dell'errore della parantesi (no, all'if mancante non ci avevo fatto caso) me ne sono accorto perchè mi era già stato segnalato in privato all'uscita dell'articolo da un altro lettore, ma una rivista una volta stampanta "muore" e non ci posso fare niente, specie a distanza di mesi e mesi dalla sua pubblicazione.

quindi, a parte scusarmi per questi errori ed invitarti a comprare un buon libro, se proprio vuoi pagare ed essere certo che tutto sia perfetto e parta per gradi, non ho altro da aggiungere

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

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.