46 messaggi dal 06 settembre 2002
In una applicazione asp.net 2.0 su IIS6 Windows 2003 Server (per ora di test) Abbiamo implementato una banale pagina di login.aspx con due textbox (user e pwd) e pulsante nella quale cerchiamo di impostare l'unica proprietà del profilo impostata nel web.config. Nella pagina di ritorno dopo il login (default.aspx) come si prova a leggere tale proprietà essa risulta ancora uguale al suo valore di default del web.config. Se invece sul page_load della pagina di arrivo provo a modificare tale proprietà esse viene correttamente letta. Da notare che nel db usato come provider (SQL Server 2005 std) il valore della proprietà viene in realtà modificato come scritto nel file di login.aspx.
Ecco i vari codici utili:

Web.config:
<configuration>
<connectionStrings>
<add name="Localsqlserver2005" connectionString="********"></add>
</connectionStrings>
<system.web>
<anonymousIdentification enabled="true"/>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="default.aspx"></forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
<profile defaultProvider="aspnetsql2005profileprovider" automaticSaveEnabled="true" enabled="true">
<providers>
<clear/>
<add name="aspnetsql2005profileprovider" connectionStringName="Localsqlserver2005" applicationName="/" type="system.web.profile.sqlprofileprovider, system.web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
<properties>
<add name="IDANA" type="system.int32" allowAnonymous="true" defaultValue="1"></add>
</properties>
</profile>
.....


Login.aspx.vb:
....
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
if 1 = 1 then 'qui va sostituito l'accesso al db aziendale per l'autenticazione
Profile.IDANA = 50
FormsAuthentication.RedirectFromLoginPage(Me.TB_Username.Text, False)
' se provo adesso a leggere il db trovo 50 nell'apposita riga della tabella aspnet_profile del profilo creato automaticamente
else
' routine di accesso negato
end if
....

Default.aspx.vb
...
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Write("Profilo IDANA=" & Profile.IDANA & "<br />")
' e qui il valore che dovrebbe essere diventato 50 invece rimane ancora 1
Profile.IDANA = 24
Response.Write("Profilo IDANA=" & Profile.IDANA & "<br />")
' qui invece il valore della proprietà viene correttamente impostato a 24
.......


Domanda finale: il file login.aspx è particolare per cui finche non si fa il redirect non è possibile accedere al profilo? Come quindi modificare il codice in modo da memorizzare nel profilo le proprietà una volta acceduto al db dedicato alla autenticazione (che non è aspnetdb ma uno aziendale)?

ING. ROBERTO RAZZAUTI
credo sia dovuto al fatto che prima modifichi il profilo di un utente anonimo, dopo quello di uno loggato.

è possibile gestire questa "transizione" mediante un evento, che adesso mi sfugge.

se non lo trovi prima te tra qualche minuto lo posto.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
46 messaggi dal 06 settembre 2002
Ti riferisci alla migrazione di utenti anonimi su utenti registrati?

ING. ROBERTO RAZZAUTI
esatto puoi dare uno sguardo allo #806

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
46 messaggi dal 06 settembre 2002
Quindi se ho capito bene dopo aver impostato il web.config come dai vs. scipt 779 e 806 (cosa in realtà già fatta se hai visto il codice postato), le operazioni in sequenza sono:

Sul login.aspx:
accesso al db di autenticazione
creazione del profilo tramite istruzione profilecommon.create(username)
domanda: ma se già esiste?
settaggio proprietà varie del profilo
salvataggio profilo

su altre pagine della applicazione
lettura e modifiche in corso delle propreità durante la sessione

sul logout della applicazione (ma come?)
Cancellazione profilo a fine sessione

ING. ROBERTO RAZZAUTI
ho dato solo un occhiata superficiale al codice.

non è necessario utilizzare il metodo Create, ma come fa nello script 806 recuperare il profilo anonimo e migrarlo, il metodo Create se trova un profilo già salvato per quell'utente lo ripristina.

per gestire i vai profile puoi usare la classe ProfileManager.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

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.