Condividi tramite


Implementazione di un provider di profili

Aggiornamento: novembre 2007

La funzionalità di profilo ASP.NET consente di utilizzare con facilità provider diversi. È possibile utilizzare la classe SqlProfileProvider fornita con .NET Framework oppure implementare un provider personalizzato.

Il provider personalizzato viene creato quando si verificano le circostanze riportate di seguito.

  • È necessario archiviare le informazioni relative al profilo in un'origine dati come, ad esempio, un database FoxPro oppure Oracle, non supportate dai provider di profili forniti con .NET Framework.

  • È necessario gestire le informazioni relative al profilo utilizzando uno schema di database diverso da quello utilizzato dai provider forniti con .NET Framework. Un esempio comune è rappresentato dalla necessità di integrare le informazioni relative al profilo con i dati utente in un database SQL Server esistente.

Classi obbligatorie

Per implementare un provider di profili, creare una classe che erediti la classe astratta System.Web.Profile.ProfileProvider. A sua volta, la classe astratta ProfileProvider eredita la classe astratta System.Configuration.SettingsProvider, la quale eredita la classe astratta System.Configuration.Provider.ProviderBase. A causa di questa catena di ereditarietà, oltre ai membri obbligatori della classe ProfileProvider, è necessario implementare i membri obbligatori delle classi SettingsProvider e ProviderBase.

Nelle seguenti tabelle vengono descritte le proprietà e i metodi che devono essere implementati dalle classi astratte ProviderBase, SettingsProvider eProfileProvider. Per esaminare un'implementazione di ciascun membro, vedere Procedura: generare ed eseguire l'esempio di provider di profili.

Membri di ProviderBase

Membro

Descrizione

Metodo Initialize

Accetta come input il nome dell'istanza del provider e un NameValueCollection di impostazioni di configurazione. Viene utilizzato per impostare le opzioni e i valori delle proprietà per l'istanza del provider, inclusi i valori specifici dell'implementazione e le opzioni specificate nel file di configurazione del computer o nel file Web.config.

Membri di SettingsProvider

Membro

Descrizione

Proprietà ApplicationName

Il nome dell'applicazione archiviato con ciascun profilo. Il provider di profili utilizza il nome dell'applicazione per archiviare le informazioni separatamente per ciascuna applicazione. In questo modo, più applicazioni ASP.NET sono in grado di utilizzare la stessa origine dati senza conflitti se viene creato lo stesso nome utente in differenti applicazioni. In alternativa, più applicazioni ASP.NET possono condividere un'origine dati del profilo specificando lo stesso nome di applicazione.

Metodo GetPropertyValues

Accetta come input un oggetto SettingsContext e un oggetto SettingsPropertyCollection.

L'oggetto SettingsContext fornisce informazioni sull'utente. È possibile utilizzare le informazioni come chiave primaria per recuperare le informazioni sulle proprietà del profilo dell'utente. Utilizzare l'oggetto SettingsContext per ottenere il nome utente e verificare se l'utente è autenticato o anonimo.

La SettingsPropertyCollection contiene un insieme di oggetti SettingsProperty. Ciascun oggetto SettingsProperty fornisce il nome e il tipo della proprietà, nonché informazioni aggiuntive quali, ad esempio, il valore predefinito della proprietà e l'indicazione se la proprietà è in sola lettura. Il metodo GetPropertyValues popola una SettingsPropertyValueCollection con oggetti SettingsPropertyValue sulla base degli oggetti SettingsProperty forniti come input. I valori derivati dall'origine dati per l'utente specifico vengono assegnati alle proprietà PropertyValue per ogni oggetto SettingsPropertyValue e viene restituito l'intero insieme.

La chiamata al metodo consente inoltre di aggiornare alla data e ora correnti il valore LastActivityDate del profilo utente specifico.

Metodo SetPropertyValues

Accetta come input una SettingsContext e un oggetto SettingsPropertyValueCollection.

La SettingsContext fornisce informazioni sull'utente. È possibile utilizzare le informazioni come chiave primaria per recuperare le informazioni sulle proprietà del profilo dell'utente. Utilizzare l'oggetto SettingsContext per recuperare il nome utente e verificare se l'utente è autenticato o anonimo.

La SettingsPropertyValueCollection contiene un insieme di oggetti SettingsPropertyValue. Ciascun oggetto SettingsPropertyValue fornisce il nome, il tipo e il valore della proprietà, nonché informazioni aggiuntive quali, ad esempio, il valore predefinito della proprietà e l'indicazione se la proprietà è in sola lettura. Il metodo SetPropertyValues aggiorna i valori delle proprietà del profilo relativi all'utente specifico nell'origine dati.

La chiamata al metodo consente anche di aggiornare alla data e ora correnti i valori LastActivityDate e LastUpdatedDate del profilo utente specifico.

Membri di ProfileProvider

Membro

Descrizione

Metodo DeleteProfiles

Accetta come input una matrice di stringhe di nomi utente ed elimina dall'origine dati tutte le informazioni relative al profilo e i valori delle proprietà dei nomi specificati quando il nome di applicazione corrisponde al valore della proprietà ApplicationName.

Se l'origine dati supporta le transazioni, si consiglia di includere tutte le operazioni delete in una transazione, nonché di eseguire il rollback della transazione e di generare un'eccezione in caso di esito negativo di un'operazione delete.

Metodo DeleteProfiles

Accetta come input un insieme di oggetti ProfileInfo ed elimina dall'origine dati tutte le informazioni relative al profilo e i valori delle proprietà di ogni profilo quando il nome dell'applicazione corrisponde al valore della proprietà ApplicationName.

Se l'origine dati supporta le transazioni, si consiglia di includere tutte le operazioni delete in una transazione, nonché di eseguire il rollback della transazione e di generare un'eccezione in caso di esito negativo di un'operazione di eliminazione.

Metodo DeleteInactiveProfiles

Accetta come input un valore ProfileAuthenticationOption e un oggetto DateTime ed elimina dall'origine dati tutte le informazioni relative al profilo e i valori delle proprietà in cui la data dell'ultima attività è antecedente o uguale alla data e all'ora specificate, e il nome dell'applicazione corrisponde al valore della proprietà ApplicationName. Mediante il parametro ProfileAuthenticationOption è possibile specificare se dovranno essere eliminati solamente i profili anonimi, i profili autenticati oppure tutti i profili.

Se l'origine dati supporta le transazioni, si consiglia di includere tutte le operazioni di eliminazione in una transazione, nonché di eseguire il rollback della transazione e di generare un'eccezione in caso di esito negativo di un'operazione delete.

Metodo GetAllProfiles

Accetta come input un valore ProfileAuthenticationOption, un valore integer che specifica l'indice della pagina, un valore integer che specifica le dimensioni della pagina e un riferimento a un valore integer che verrà impostato sul conteggio totale dei profili. Restituisce una ProfileInfoCollection che contiene oggetti ProfileInfo per tutti i profili nell'origine dati in cui il nome dell'applicazione corrisponde al valore della proprietà ApplicationName. Mediante il parametro ProfileAuthenticationOption, è possibile specificare se dovranno essere restituiti solamente profili anonimi, solamente profili autenticati oppure tutti i profili.

I risultati restituiti dal metodo GetAllProfiles sono limitati dai valori dell'indice della pagina e delle dimensioni della pagina. Il valore delle dimensioni della pagina specifica il numero massimo di oggetti ProfileInfo da restituire nella ProfileInfoCollection. Il valore dell'indice della pagina specifica quale pagina di risultati verrà restituita, dove 1 identifica la prima pagina. Il parametro dei record totali è un parametro out (in Visual Basic è possibile utilizzare ByRef) impostato sul numero totale di profili. Se, ad esempio, l'archivio dati contiene 13 profili per l'applicazione e il valore dell'indice della pagina è 6 con una dimensione di pagina pari a 5, la ProfileInfoCollection restituita conterrà dal sesto al decimo profilo. Quando il metodo restituisce, il valore totale dei record sarà impostato su 13.

Metodo GetAllInactiveProfiles

Accetta come input un valore ProfileAuthenticationOption, un oggetto DateTime, un valore integer che specifica l'indice della pagina, un valore integer che specifica le dimensioni della pagina e un riferimento a un valore integer che verrà impostato sul conteggio totale dei profili. Restituisce una ProfileInfoCollection che contiene gli oggetti ProfileInfo per tutti i profili nell'origine dati in cui la data dell'ultima attività è precedente o uguale alla DateTime specificata e il nome dell'applicazione corrisponde al valore della proprietà ApplicationName. Mediante il parametro ProfileAuthenticationOption, è possibile specificare se dovranno essere restituiti solamente profili anonimi, solamente profili autenticati oppure tutti i profili.

I risultati restituiti dal metodo GetAllInactiveProfiles sono limitati dai valori dell'indice della pagina e delle dimensioni della pagina. Il valore delle dimensioni della pagina specifica il numero massimo di oggetti ProfileInfo da restituire nella ProfileInfoCollection. Il valore dell'indice della pagina specifica quale pagina di risultati verrà restituita, dove 1 identifica la prima pagina. Il parametro dei record totali è un parametro out (in Visual Basic è possibile utilizzare ByRef) impostato sul numero totale di profili. Se, ad esempio, l'archivio dati contiene 13 profili per l'applicazione e il valore dell'indice della pagina è 2 con una dimensione di pagina pari a 5, la ProfileInfoCollection restituita conterrà dal sesto al decimo profilo. Quando il metodo restituisce, il valore totale dei record sarà impostato su 13.

Metodo FindProfilesByUserName

Accetta come input un valore ProfileAuthenticationOption, una stringa contenente un nome utente, un valore integer che specifica l'indice della pagina, un valore integer che specifica le dimensioni della pagina e un riferimento a un valore integer che verrà impostato sul conteggio totale dei profili. Restituisce una ProfileInfoCollection che contiene gli oggetti ProfileInfo per tutti i profili nell'origine dati in cui il nome utente corrisponde al nome utente specificato e il nome dell'applicazione corrisponde al valore della proprietà ApplicationName. Mediante il parametro ProfileAuthenticationOption, è possibile specificare se dovranno essere restituiti solamente profili anonimi, solamente profili autenticati oppure tutti i profili.

Se l'origine dati supporta ulteriori capacità di ricerca come, ad esempio, i caratteri jolly, è possibile fornire capacità di ricerca più ampie per i nomi utente.

I risultati restituiti dal metodo FindProfilesByUserName sono limitati dai valori dell'indice della pagina e delle dimensioni della pagina. Il valore delle dimensioni della pagina specifica il numero massimo di oggetti ProfileInfo da restituire nella ProfileInfoCollection. Il valore dell'indice della pagina specifica quale pagina di risultati verrà restituita, dove 1 identifica la prima pagina. Il parametro dei record totali è un parametro out (in Visual Basic è possibile utilizzare ByRef) impostato sul numero totale di profili. Se, ad esempio, l'archivio dati contiene 13 profili per l'applicazione e il valore dell'indice della pagina è 2 con una dimensione di pagina pari a 5, la ProfileInfoCollection restituita conterrà dal sesto al decimo profilo. Quando il metodo restituisce, il valore totale dei record sarà impostato su 13.

Metodo FindInactiveProfilesByUserName

Accetta come input un valore ProfileAuthenticationOption, una stringa contenente un nome utente, un oggetto DateTime, un valore integer che specifica l'indice della pagina, un valore integer che specifica le dimensioni della pagina e un riferimento a un valore integer che sarà impostato sul conteggio totale dei profili. Restituisce una ProfileInfoCollection che contiene gli oggetti ProfileInfo per tutti i profili nell'origine dati in cui il nome utente corrisponde al nome utente specificato, la data dell'ultima attività è precedente o uguale alla DateTime specificata e il nome dell'applicazione corrisponde al valore della proprietà ApplicationName. Mediante il parametro ProfileAuthenticationOption, è possibile specificare se le restituzioni verranno effettuate solo nei profili anonimi, solo nei profili autenticati oppure in tutti i profili.

Se l'origine dati supporta ulteriori capacità di ricerca come, ad esempio, i caratteri jolly, è possibile fornire capacità di ricerca più ampie per i nomi utente.

I risultati restituiti dal metodo FindInactiveProfilesByUserName sono limitati dai valori dell'indice della pagina e delle dimensioni della pagina. Il valore delle dimensioni della pagina specifica il numero massimo di oggetti ProfileInfo da restituire nella ProfileInfoCollection. Il valore dell'indice della pagina specifica quale pagina di risultati verrà restituita, dove 1 identifica la prima pagina. Il parametro dei record totali è un parametro out (in Visual Basic è possibile utilizzare ByRef) impostato sul numero totale di profili. Se, ad esempio, l'archivio dati contiene 13 profili per l'applicazione e il valore dell'indice della pagina è 2 con una dimensione di pagina pari a 5, la ProfileInfoCollection restituita conterrà dal sesto al decimo profilo. Quando il metodo restituisce, il valore totale dei record sarà impostato su 13.

Metodo GetNumberOfInactiveProfiles

Accetta come input un valore ProfileAuthenticationOption e un oggetto DateTime e restituisce un conteggio di tutti i profili nell'origine dati in cui la data dell'ultima attività è precedente o uguale alla DateTime specificata e il nome dell'applicazione corrisponde al valore della proprietà ApplicationName. Mediante il parametro ProfileAuthenticationOption è possibile specificare se i conteggi verranno effettuati solo nei profili anonimi, solo nei profili autenticati oppure in tutti i profili.

ApplicationName

Poiché i provider di profili archiviano le informazioni sui profili separatamente per ciascuna applicazione, è necessario assicurarsi che lo schema dei dati, le query e gli aggiornamenti includano il nome dell'applicazione. Il comando riportato di seguito, ad esempio, viene utilizzato per recuperare un valore della proprietà da un database in base al nome utente e alla registrazione del profilo come anonimo, e garantisce che il valore ApplicationName sia incluso nella query.

SELECT Property FROM PropertyTable 
  WHERE Username = 'user1' AND IsAnonymous = False 
  AND ApplicationName = 'MyApplication'

Vedere anche

Attività

Procedura: generare ed eseguire l'esempio di provider di profili

Concetti

Cenni preliminari sulle proprietà dei profili ASP.NET

Provider di profili ASP.NET