Procedura dettagliata: gestione delle informazioni utente dei siti Web con le proprietà dei profili

Aggiornamento: novembre 2007

Le proprietà Profile ASP.NET consentono all'applicazione di tenere traccia delle informazioni specifiche dell'utente e di memorizzarle. Gli utenti possono, ad esempio specificare un codice postale o uno schema dei colori preferiti che verranno memorizzati all'interno dell'applicazione e recuperati successivamente. ASP.NET consente di associare automaticamente l'utente corrente, indipendentemente dal fatto che si tratti di un utente anonimo oppure connesso, alle informazioni personali memorizzate per il relativo account utente.

In questa procedura dettagliata verrà illustrato come aggiungere le proprietà Profile all'applicazione e come utilizzarle per creare un'esperienza personalizzata per i visitatori del sito Web.

Nella procedura vengono illustrate le seguenti operazioni:

  • Configurazione di un'applicazione per l'utilizzo delle proprietà Profile.

  • Definizione delle proprietà Profile semplici e complesse che si desidera gestire per gli utenti.

  • Impostazione e recupero dei valori di Profile all'interno dell'applicazione.

  • Utilizzo delle proprietà Profile con utenti sia anonimi che connessi.

Per completare questa procedura dettagliata, è necessario disporre dei seguenti elementi:

  • Microsoft Visual Web Developer.

  • Microsoft .NET Framework.

  • Microsoft SQL Server Standard Edition.

    Le informazioni della proprietà Profile che sarà creata nella procedura dettagliata saranno memorizzate in un database di SQL Server Standard Edition.

  • Cookie attivati nel browser utilizzato.

    Nota:

    Le proprietà Profile ASP.NET funzionano anche senza cookie, se l'applicazione è configurata per il funzionamento senza cookie. Tuttavia, per questa procedura dettagliata saranno utilizzate le impostazioni di configurazione predefinite per le proprietà Profile; pertanto saranno utilizzati i cookie.

Se è già stato creato un sito Web in Microsoft Visual Studio completando Procedura dettagliata: creazione di una pagina Web di base in Visual Web Developer, è possibile utilizzare quel sito e passare alla sezione successiva. In caso contrario, creare un nuovo sito Web nuovi attenendosi alla seguente procedura.

Per creare un sito Web di file system

  1. Aprire Visual Studio.

  2. Nel menu File, puntare a Nuovo e fare clic su Sito Web (oppure scegliere Nuovo sito Web dal menu File).

    Viene visualizzata la finestra di dialogo Nuovo sito Web.

  3. In Modelli Visual Studio installati fare clic su Sito Web ASP.NET.

  4. Nell'elenco Percorso più a sinistra, fare clic su File system.

  5. Nell'elenco Percorso più a destra, immettere il nome della cartella in cui salvare le pagine del sito Web.

    Digitare, ad esempio, il nome di cartella C:\\WebSites.

  6. Nell'elenco Linguaggio scegliere il linguaggio di programmazione da utilizzare.

  7. Scegliere OK.

    La cartella viene creata insieme a una nuova pagina chiamata Default.aspx.

Prima di utilizzare le proprietà Profile ASP.NET, sarà necessario configurare l'applicazione per l'attivazione e la definizione delle proprietà Profile di cui si desidera tenere traccia per ciascun utente. Innanzitutto, sarà creata una singola proprietà PostalCode che consentirà di tenere traccia degli utenti nel sito Web. La proprietà PostalCode verrà inoltre configurata in modo che sia possibile tenere traccia sia degli utenti anonimi, sia di quelli connessi al sito.

All'inizio si opererà come utente anonimo. ASP.NET assegnerà automaticamente all'utente un ID anonimo univoco che sarà memorizzato in un cookie nel computer. Tale ID anonimo sarà utilizzato in ASP.NET per impostare e ottenere valori univoci per l'utente.

Per configurare le proprietà di profilo nel sito Web

  1. In Esplora soluzioni, determinare se il sito Web dispone già di un file Web.config.

    Se il sito Web non dispone di un file Web.config file, attenersi alla seguente procedura:

    1. Fare clic con il pulsante destro del mouse sul nome del sito Web.

    2. Scegliere Aggiungi nuovo elemento.

    3. In Modelli Visual Studio installati fare clic su File di configurazione Web.

    4. Fare clic su Aggiungi.

      Un nuovo file denominato Web.config viene aggiunto al sito e aperto nell'editor.

  2. Aggiungere il seguente elemento <profile> al file Web.config come elemento figlio dell'elemento <system.web>:

    <system.web>
    
      <anonymousIdentification enabled="true" />  <profile>    <properties>      <add name="PostalCode"         type="System.String"         allowAnonymous="true" />    </properties>  </profile>
    
    <!-- other Web.config settings here -->
    </system.web>
    
    Nota:

    Per gli elementi del file Web.config viene fatta distinzione tra maiuscole e minuscole. Pertanto, accertarsi di copiare o digitare gli elementi esattamente come indicato.

    Sono stati aggiunti i seguenti elementi:

    • L'elemento <anonymousIdentification>, che specifica se le proprietà Profile funzionano solo con gli utenti connessi (autenticati) oppure anche con gli utenti anonimi.

      In questo caso, la proprietà enabled è stata impostata su true. Pertanto, sarà tenuta traccia delle informazioni della proprietà Profile sia per gli utenti connessi, sia per quelli anonimi.

    • L'elemento <properties>, in cui sono contenute tutte le proprietà Profile che vengono definite.

    • L'elemento <add>, che definisce un nuovo elemento <profile>.

      In questo caso, è stata definita una singola proprietà Profile denominata PostalCode.

      Quando si definisce una proprietà Profile, il relativo tipo di dati viene specificato mediante un nome di classe di tipo .NET Framework. Viene inoltre specificato se sarà tenuta traccia della proprietà Profile per gli utenti anonimi. Una volta attivata l'identificazione anonima, è possibile anche specificare se tenere traccia delle proprietà Profile singolarmente per gli utenti anonimi.

      Verrà creato un nuovo elemento add per ogni proprietà Profile aggiuntiva da definire.

      Nota:

      Per impostazione predefinita, le informazioni di profilo dell'utente vengono memorizzate in un database di SQL Server Standard Edition all'interno della sottodirectory Application_Data del sito Web. In questa procedura dettagliata viene utilizzata la configurazione predefinita. Nelle applicazioni di produzione in cui sarà supportato un numero significativo di utenti, è preferibile memorizzare i dati della proprietà Profile in un database di Microsoft SQL Server. Per ulteriori informazioni, vedere la sezione "Passaggi successivi" più avanti in questa procedura dettagliata.

Dopo aver configurato il sito Web in modo da tenere traccia di una proprietà Profile, è possibile impostare e ottenere la proprietà Profile in modo identico alle proprietà dei componenti ordinari. In questa sezione, verrà creata una pagina in cui viene illustrato come impostare e ottenere il valore di PostalCode definito nella sezione precedente.

Per creare una pagina per impostare e ottenere la proprietà PostalCode

  1. Aggiungere al sito una nuova pagina Web denominata Profiles.aspx.

  2. Aprire la pagina Profiles.aspx e passare alla visualizzazione Progettazione.

  3. Dal gruppo Standard della Casella degli strumenti, trascinare nella pagina i controlli della tabella seguente e impostare le relative proprietà come indicato di seguito:

    Controllo

    Impostazioni proprietà

    TextBox

    ID = textPostalCode

    Button

    ID = SetPostalCode

    Text = Set Postal Code

    Label

    ID = labelPostalCode

    Text = (vuoto)

  4. Passare alla visualizzazione Origine e aggiungere il seguente attributo al pulsante SetPostalCode, se l'attributo non esiste.

    OnClick="SetPostalCode_Click"
    
  5. Creare un gestore Click per Set Postal Code e aggiungere il codice evidenziato riportato di seguito.

    Sub SetPostalCode_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text)    labelPostalCode.Text = Profile.PostalCode
    End Sub
    

    void SetPostalCode_Click(object sender, System.EventArgs e)
    {
        Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text);    labelPostalCode.Text = Profile.PostalCode;
    }
    

    Se il profilo utente è attivato, ASP.NET crea in modo dinamico una proprietà denominata Profile che consente di aggiungere il profilo utente al contesto corrente. Le singole proprietà Profile sono quindi disponibili mediante Profile.PostalCode.

  6. Creare un gestore Page_Load e aggiungere il codice evidenziato riportato di seguito.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        labelPostalCode.Text = Profile.PostalCode
    End Sub
    

    void Page_Load(object sender, System.EventArgs e)
    {
        labelPostalCode.Text = Profile.PostalCode;
    }
    

    Tale codice consentirà di visualizzare il valore di Profile.PostalCode ogni volta che viene richiesta la pagina.

Esecuzione del test della proprietà di profilo PostalCode

È ora possibile eseguire il test della proprietà PostalCode definita nella sezione precedente.

Nota:

Se utilizza un sito Web esistente in cui è attivata l'appartenenza, accertarsi di essere disconnessi.

Per eseguire il test della proprietà PostalCode:

  1. Premere CTRL+F5 per eseguire la pagina Profiles.aspx.

    Nota:

    Se nel browser viene visualizzato un errore 502 oppure un errore indicante l'impossibilità di visualizzare la pagina, è possibile che occorra configurare il browser in modo da ignorare i server proxy per le richieste locali. Per informazioni dettagliate, vedere Procedura: ignorare un server proxy per le richieste Web locali.

  2. Nella casella, digitare un codice postale e fare clic su Set Postal Code.

    Il codice postale immesso viene visualizzato nel controllo Label.

  3. Chiudere il browser per chiudere la sessione corrente.

  4. Riaprire il browser e richiedere la pagina Profiles.aspx.

    Il codice postale immesso in precedenza viene visualizzato nel controllo Label.

Nell'ultimo passaggio della procedura precedente è stato illustrato come ASP.NET memorizzi il valore di PostalCode. Nel momento in cui la pagina viene visitata nuovamente, ASP.NET potrà leggere il valore di PostalCode in base all'ID anonimo univoco utilizzato.

Nella sezione precedente "Impostazione e recupero della proprietà PostalCode" di questa procedura dettagliata, è stata creata una proprietà semplice denominata PostalCode e memorizzata come stringa. In questa sezione, verrà definita una proprietà denominata FavoriteURLs che rappresenta un insieme. In ASP.NET è possibile memorizzare qualsiasi tipo di proprietà Profile; tuttavia, quando si definisce una proprietà Profile, è necessario fornire informazioni aggiuntive.

Per definire la proprietà FavoriteURLs

  1. Aprire il file Web.config.

  2. Aggiungere il seguente elemento evidenziato all'elemento profile creato nella precedente sezione "Configurazione delle proprietà di profilo" della procedura dettagliata:

    <anonymousIdentification enabled="true" />
      <profile>
        <properties>
        <add name="PostalCode" 
          type="System.String" 
          allowAnonymous="true" />
        <add name="FavoriteURLs"       type="System.Collections.Specialized.StringCollection"      allowAnonymous="true" />
        </properties>
      </profile>
    

    È stata aggiunta una nuova proprietà Profile denominata FavoriteURLs. Per le proprietà Profile che non sono tipi semplici (ad esempio di tipo string o integer), è necessario specificare il nome completo. In questo caso, si sta specificando che la proprietà Profile sarà un insieme in cui sono contenute delle stringhe.

  3. Salvare e chiudere il file Web.config.

L'utilizzo della proprietà FavoriteURLs, che rappresenta un insieme, è simile all'utilizzo di un insieme in un qualsiasi contesto. In questa parte della procedura dettagliata, la pagina Profiles.aspx creata nella precedente sezione "Impostazione e recupero della proprietà PostalCode" della procedura dettagliata, verrà aggiornata mediante l'aggiunta di un controllo TextBox in cui gli utenti potranno digitare un URL. Quando l'utente fa clic su Aggiungi, l'URL viene aggiunto alla proprietà FavoriteURLs. Verrà inoltre visualizzato l'elenco corrente degli URL preferiti in una casella di riepilogo a discesa.

Per impostare e ottenere la proprietà FavoriteURLs

  1. Nella pagina Profiles.aspx, aggiungere i seguenti controlli e impostarne le relative proprietà come indicato nella tabella riportata di seguito.

    Controllo

    Impostazioni proprietà

    TextBox

    ID = textFavoriteURL

    Button

    ID = AddURL

    Text = Add URL

    ListBox

    ID = listFavoriteURLs

  2. Passare alla visualizzazione Origine e aggiungere il seguente attributo al pulsante Add URL, se l'attributo non esiste.

    OnClick="AddURL_Click"
    
  3. Creare un gestore Click per Add URL e aggiungere il codice evidenziato riportato di seguito.

    Sub AddURL_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Dim urlString As String = _        Server.HtmlEncode(textFavoriteURL.Text)
        If Profile.FavoriteURLs Is Nothing Then
            Profile.FavoriteURLs = New _
                System.Collections.Specialized.StringCollection
        End If
        Profile.FavoriteURLs.Add(urlString)    DisplayFavoriteURLs()
    End Sub
    

    void AddURL_Click(object sender, System.EventArgs e)
    {    
        String urlString = Server.HtmlEncode(textFavoriteURL.Text);
        if(Profile.FavoriteURLs == null)
        {
            Profile.FavoriteURLs = new 
                System.Collections.Specialized.StringCollection();
        }
        Profile.FavoriteURLs.Add(urlString);    DisplayFavoriteURLs();
    }
    
    
  4. Nel gestore Page_Load, aggiungere la seguente riga di codice evidenziata:

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        labelPostalCode.Text = Profile.PostalCode
        DisplayFavoriteURLs()
    End Sub
    

    void Page_Load(object sender, System.EventArgs e)
    {
        labelPostalCode.Text = Profile.PostalCode;
        DisplayFavoriteURLs();
    }
    
    
  5. Aggiungere la seguente subroutine per aggiornare la visualizzazione degli URL nel controllo ListBox.

    Sub DisplayFavoriteURLs()
        listFavoriteURLs.DataSource = Profile.FavoriteURLs
        listFavoriteURLs.DataBind()
    End Sub
    

    void DisplayFavoriteURLs()
    {    
        listFavoriteURLs.DataSource = Profile.FavoriteURLs;
        listFavoriteURLs.DataBind();
    }
    
    

Esecuzione del test della proprietà di profilo FavoriteURLs

È ora possibile eseguire il test della proprietà FavoriteURLs.

Per eseguire il test della proprietà FavoriteURLs

  1. Premere CTRL+F5 per eseguire la pagina Profiles.aspx.

    Inizialmente, nel controllo ListBox non è presente alcun valore.

  2. Nella casella, digitare un URL e fare clic su Aggiungi.

    L'URL viene aggiunto al controllo ListBox.

  3. Ripetere il passaggio precedente per aggiungere un altro URL.

  4. Chiudere il browser.

  5. Riaprire il browser e aprire la pagina Profiles.aspx.

    Il controllo ListBox è compilato con gli URL immessi prima di chiudere il browser.

Se un utente visita il sito dapprima come utente anonimo, ma successivamente esegue l'accesso, è possibile che si desideri mantenere le impostazioni di proprietà definite dall'utente anonimo. Un esempio comune è rappresentato da un sito per gli acquisti, in cui è possibile che l'utente decida di cercare e aggiungere articoli a un carrello come utente anonimo, ma successivamente effettuare l'accesso per il processo di pagamento. Per mantenere i valori di un utente al momento dell'accesso, viene eseguita la migrazione dell'utente dal profilo anonimo corrente al profilo utilizzato come utente connesso (autenticato).

In questa sezione, verrà eseguita la migrazione dell'impostazione PostalCode dell'utente. È necessario disporre di un sito Web già configurato all'utilizzo di identità e provvisto di una pagina di accesso. Se il sito Web che si sta utilizzando non è già stato configurato per l'appartenenza, attivare la funzionalità mediante la seguente procedura. Se il sito supporta già l'appartenenza, è possibile passare alla sezione successiva.

Per configurare il sito Web per l'appartenenza

  1. In Visual Studio scegliere Configurazione di ASP.NET dal menu Sito Web.

    Viene visualizzato lo strumento Amministrazione sito Web.

  2. Fare clic sulla scheda Sicurezza.

  3. Fare clic su Sicurezza, quindi in Utenti, scegliere Seleziona tipo di autenticazione.

  4. Selezionare Da Internet, e fare clic su Chiudi.

    L'opzione Da Internet indica che nell'applicazione sarà utilizzata l'autenticazione basata su form, nella quale gli utenti effettuano l'accesso all'applicazione mediante una pagina di accesso.

  5. Nella scheda Sicurezza, in Utenti, fare clic su Crea utente e creare un account utente.

    È possibile utilizzare un nome e una password qualsiasi che, tuttavia, è necessario non dimenticare. Utilizzare il proprio indirizzo di posta elettronica (anche se in questa procedura dettagliata non saranno inviati messaggi di posta elettronica).

  6. Una volta terminata la definizione dell'account utente, chiudere lo Strumento di amministrazione del sito Web.

  7. Trascinare un controllo Login e un controllo LoginName nella pagina dal gruppo Accesso della Casella degli strumenti.

    Sebbene il controllo LoginName non sia necessario per l'accesso, consente di visualizzare l'avvenuta connessione.

Creazione di un gestore di migrazione

Per migrare le impostazioni relative a un utente anonimo alle impostazioni relative a un utente connesso, è necessario eseguire la migrazione nel momento in cui si effettua la modifica dell'identità dell'utente. L'evento MigrateAnonymous di ASP.NET viene fornito proprio a questo scopo; nel gestore relativo all'evento MigrateAnonymous è possibile trasferire le impostazioni che si desidera mantenere.

Per creare un gestore migrazioni

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nome del sito Web, quindi scegliere Aggiungi nuovo elemento.

  2. In Modelli Visual Studio installati, fare clic su Classe di applicazione globale e scegliere Aggiungi.

    Non occorre immettere un nome, in quanto il file è già denominato Global.asax.

  3. Digitare il codice riportato di seguito per creare un nuovo gestore per l'evento MigrateAnonymous.

    Sub Profile_MigrateAnonymous(ByVal sender As Object, _
        ByVal e As ProfileMigrateEventArgs)
        If Profile.GetProfile(e.AnonymousID).PostalCode <> "" Then
            Profile.PostalCode = _
                Profile.GetProfile(e.AnonymousID).PostalCode
        End If
    End Sub
    

    void Profile_MigrateAnonymous(Object sender, 
            ProfileMigrateEventArgs e)
    {
        if(Profile.GetProfile(e.AnonymousID).PostalCode != String.Empty)
        {
            Profile.PostalCode = 
                Profile.GetProfile(e.AnonymousID).PostalCode;
        }
    }
    
    

    Il codice consente di ottenere il profilo utente dell'utente anonimo e di estrarre il valore di PostalCode. Successivamente, consente di ottenere il profilo dell'identità del nuovo utente e di impostare il valore equivalente a quella identità.

Esecuzione del test della migrazione

Per eseguire il test della migrazione, è necessario innanzitutto eseguire alcune impostazioni come utente anonimo. Quindi, sarà necessario eseguire l'accesso e controllare che i valori vengano mantenuti.

Per eseguire il test della migrazione

  1. Aprire la pagina Profiles.aspx, quindi premere CTRL+F5 per eseguirla.

    Nel controllo LoginName non viene visualizzato alcun elemento, in quanto non è stato ancora effettuato l'accesso.

  2. Se nella pagina non è visualizzato un codice postale, digitare un nuovo codice postale e fare clic su Set Postal Code.

    Nella pagina verrà visualizzato il codice postale dell'identità anonima corrente.

  3. Eseguire l'accesso mediante il nome utente e la password create nella precedente sezione "Migrazione delle proprietà di profilo durante l'accesso" di questa procedura dettagliata.

    Nel controllo LoginName sarà visualizzato il nome utente immesso. Il codice postale immesso come utente anonimo continuerà ad essere visualizzato, in quanto le impostazioni di codice postale sono state migrate al profilo utente connesso.

In questa procedura dettagliata sono state illustrate le procedure di base per configurare e utilizzare le proprietà Profile nelle applicazioni Web. Le proprietà Profile possono essere utilizzate per molti scopi diversi all'interno delle applicazioni. Nell'elenco riportato di seguito sono consigliate altre aree in cui è possibile utilizzare tali proprietà:

Aggiunte alla community

Mostra: