23 messaggi dal 28 novembre 2005
Ciao giovani,

provate a scrivere questo codice all'interno di una pagina aspnet con profile anonimo attivato:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

'Creo un profileCommon che in teoria dovrebbe essere uguale a quello corrente, visto che uso lo stesso GUID

Dim p As ProfileCommon = Profile.GetProfile(Profile.UserName) ' ho usato lo stesso GUID del profile corrente visto che ho chiamato Profile.UserName
Response.Write(p.IsAnonymous)

Response.Write("<br />")

Response.Write(Profile.IsAnonymous)

End Sub

Essendo i due profili identici ci si potrebbe aspettare che i due write scrivano la stessa cosa, invece il risultato è:

False
True

Non vi pare strano? Questa stranezza capita solo per la proprietà IsAnonymous perché le altre proprietà effettivamente sono uguali. Sapete dirmi il motivo?
1.508 messaggi dal 27 dicembre 2005
per me è giusto perche penso che il runtime riempia l'oggetto profile per ogni utente che ha effettuato l'accesso.
23 messaggi dal 28 novembre 2005
Ciao,
ho risolto i problemi che mi aveva causato il codice precedente e qui posto la soluzione nel caso servisse ad altri.

Quando da codice si utilizza Profile.GetProfile(Username) è possibile associare tutti i profile diversi che si vuole a tante variabili ProfileCommon. Per esempio:

Dim p1, p2, p3 as ProfileCommon
p1= Profile.GetProfile(Username1)
p2= Profile.GetProfile(Username2)
p3= Profile.GetProfile(Username3)

funziona perfettamente e restituisce tre profili differenti di cui si possono leggere tranquillamente tutte le proprietà.
Queste proprietà non vengono salvate automaticamente quando vengono cambiate e la proprietà IsAnonymous è sempre false indipendentemente se l'username è anonimo (guid generato automaticamente da asp.net) oppure no. Solamente il Profile associato all'HttpContext viene salvato automaticamente e fornisce il corretto valore della proprietà IsAnonymous.
Quindi se si ha l'esigenza di modificare un profilo di un utente DIVERSO da quello che sta navigando la pagina bisogna sempre ricordarsi di fare per esempio:
p1.Save()
altrimenti ci ritroviamo alla richiesta successiva con i dati non persistiti.
Inoltre se si ha la necessità di capire se il profile dell'utente DIVERSO dal corrente è anonimo o no è assolutamente inutile utilizzare la proprietà IsAnonymous del profileCommon creato perché restituisce sempre False. L'unico modo è interrogare il database verificando la colonna IsAnonymous della tabella aspnet_Users.

Spero possa essere utile a qualcuno e se ho fatto errori prego correggetemi.


"totti240282" <totti240282> wrote in message news:258201@...
per me è giusto perche penso che il runtime riempia l'oggetto profile per ogni utente che ha effettuato l'accesso.



Corso ASP.NET 2.0 online o su CDRom, da 42,00 Euro. Acquistalo subito! http://g.aspitalia.com/gc.aspx?ID=380

Hosted by http://www.ithost.ch - your host company

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.