Share via


Implementieren eines Profilanbieters

Aktualisiert: November 2007

Mit dem ASP.NET-Profilfeature können Sie auf einfache Weise mehrere Anbieter verwenden. Sie können die SqlProfileProvider-Klasse von .NET Framework oder einen eigenen Anbieter implementieren.

Erstellen Sie unter folgenden Bedingungen einen benutzerdefinierten Profilanbieter:

  • Sie müssen Profilinformationen in einer Datenquelle speichern, die nicht von den Profilanbietern in .NET Framework unterstützt wird, z. B. in einer FoxPro-Datenbank oder einer Oracle-Datenbank.

  • Sie müssen Profilinformationen mit einem Datenbankschema verwalten, das vom Datenbankschema der Anbieter in .NET Framework abweicht. Ein klassisches Beispiel ist das Integrieren von Profilinformationen mit Benutzerdaten in eine vorhandene SQL Server-Datenbank.

Erforderliche Klassen

Zum Implementieren eines Profilanbieters müssen Sie eine Klasse erstellen, die die abstrakte System.Web.Profile.ProfileProvider-Klasse erbt. Die abstrakte ProfileProvider-Klasse erbt wiederum die abstrakte System.Configuration.SettingsProvider-Klasse, und diese erbt die abstrakte System.Configuration.Provider.ProviderBase-Klasse. Aufgrund dieser Vererbungskette müssen Sie zusätzlich zu den erforderlichen Membern der ProfileProvider-Klasse die erforderlichen Member der SettingsProvider-Klasse und der ProviderBase-Klasse implementieren.

In den folgenden Tabellen werden diejenigen Eigenschaften und Methoden beschrieben, die Sie von den abstrakten Klassen ProviderBase, SettingsProvider und ProfileProvider implementieren müssen. Weitere Informationen zur Implementierung der einzelnen Member finden Sie unter Gewusst wie: Erstellen und Ausführen des Beispiels für Profilanbieter.

ProviderBase-Member

Member

Beschreibung

Initialize-Methode

Erfordert als Eingabe den Namen der Anbieterinstanz und eine NameValueCollection mit Konfigurationseinstellungen. Wird verwendet, um Optionen und Eigenschaftenwerte für die Anbieterinstanz festzulegen. Dazu gehören implementierungsspezifische Werte und Optionen, die in der Computerkonfiguration oder in der Datei Web.config angegeben sind.

SettingsProvider-Member

Member

Beschreibung

ApplicationName-Eigenschaft

Der Anwendungsname, der mit jedem Profil gespeichert wird. Der Profilanbieter verwendet den Anwendungsnamen, um die Profilinformationen für jede Anwendung getrennt zu speichern. Dadurch können mehrere ASP.NET-Anwendungen dieselbe Datenquelle konfliktfrei verwenden, auch wenn derselbe Benutzername in verschiedenen Anwendungen erstellt wird. Alternativ dazu können mehrere ASP.NET-Anwendungen eine Profildatenquelle durch Angabe desselben Anwendungsnamens gemeinsam verwenden.

GetPropertyValues-Methode

Erfordert als Eingabe ein SettingsContext-Objekt und ein SettingsPropertyCollection-Objekt.

SettingsContext enthält Informationen über den Benutzer. Sie können die Informationen als Primärschlüssel zum Abrufen von Profileigenschafteninformationen für den Benutzer verwenden. Verwenden Sie das SettingsContext-Objekt, um den Benutzernamen abzurufen und um zu bestimmen, ob der Benutzer authentifiziert oder anonym ist.

Die SettingsPropertyCollection enthält eine Auflistung von SettingsProperty-Objekten. Jedes SettingsProperty-Objekt enthält Name und Typ der Eigenschaft sowie zusätzliche Informationen wie den Standardwert der Eigenschaft und die Information, ob eine Eigenschaft schreibgeschützt ist. Die GetPropertyValues-Methode füllt eine SettingsPropertyValueCollection auf Grundlage der eingegebenen SettingsProperty-Objekte mit SettingsPropertyValue-Objekten auf. Die Werte aus der Datenquelle für den angegebenen Benutzer werden den PropertyValue-Eigenschaften der einzelnen SettingsPropertyValue-Objekte zugeordnet, und die gesamte Auflistung wird zurückgegeben.

Durch Aufrufen der Methode wird auch der LastActivityDate-Wert für das angegebene Benutzerprofil auf das aktuelle Datum und die aktuelle Uhrzeit aktualisiert.

SetPropertyValues-Methode

Erfordert als Eingabe ein SettingsContext-Objekt und ein SettingsPropertyValueCollection-Objekt.

SettingsContext enthält Informationen über den Benutzer. Sie können die Informationen als Primärschlüssel zum Abrufen von Profileigenschafteninformationen für den Benutzer verwenden. Verwenden Sie das SettingsContext-Objekt, um den Benutzernamen abzurufen und um zu bestimmen, ob der Benutzer authentifiziert oder anonym ist.

Die SettingsPropertyValueCollection enthält eine Auflistung von SettingsPropertyValue-Objekten. Jedes SettingsPropertyValue-Objekt enthält Name, Typ und Wert der Eigenschaft sowie zusätzliche Informationen wie den Standardwert der Eigenschaft und die Information, ob eine Eigenschaft schreibgeschützt ist. Die SetPropertyValues-Methode aktualisiert die Profileigenschaftenwerte in der Datenquelle für den angegebenen Benutzer.

Durch Aufrufen der Methode werden außerdem der LastActivityDate-Wert und der LastUpdatedDate-Wert für das angegebene Benutzerprofil auf das aktuelle Datum und die aktuelle Uhrzeit aktualisiert.

ProfileProvider-Member

Member

Beschreibung

DeleteProfiles-Methode

Erfordert als Eingabe ein Zeichenfolgenarray aus Benutzernamen. Löscht alle Profilinformationen und Eigenschaftenwerte für die angegebenen Namen aus der Datenquelle, wenn der Anwendungsname mit dem ApplicationName-Eigenschaftenwert übereinstimmt.

Wenn die Datenquelle Transaktionen unterstützt, dann sollten Sie alle Löschoperationen in eine Transaktion aufnehmen, einen Rollback für die Transaktion ausführen und eine Ausnahme auslösen, wenn eine Löschoperation fehlschlägt.

DeleteProfiles-Methode

Erfordert als Eingabe eine Auflistung von ProfileInfo-Objekten. Löscht alle Profilinformationen und Eigenschaftenwerte für die einzelnen Profile aus der Datenquelle, wenn der Anwendungsname mit dem ApplicationName-Eigenschaftenwert übereinstimmt.

Wenn die Datenquelle Transaktionen unterstützt, dann sollten Sie alle Löschoperationen in eine Transaktion aufnehmen, einen Rollback für die Transaktion ausführen und eine Ausnahme auslösen, wenn eine Löschoperation fehlschlägt.

DeleteInactiveProfiles-Methode

Erfordert als Eingabe einen ProfileAuthenticationOption-Wert und ein DateTime-Objekt. Löscht alle Profilinformationen und Eigenschaftenwerte aus der Datenquelle, wenn Datum und Uhrzeit der letzten Aktivität identisch mit dem angegebenem Datum und der angegebenen Uhrzeit sind bzw. davor liegen und wenn der Anwendungsname mit dem ApplicationName-Eigenschaftenwert übereinstimmt. Der ProfileAuthenticationOption-Parameter gibt an, ob nur anonyme Profile, nur authentifizierte Profile oder alle Profile gelöscht werden sollen.

Wenn die Datenquelle Transaktionen unterstützt, dann sollten Sie alle Löschoperationen in eine Transaktion aufnehmen, einen Rollback für die Transaktion ausführen und eine Ausnahme auslösen, wenn eine Löschoperation fehlschlägt.

GetAllProfiles-Methode

Erfordert als Eingabe einen ProfileAuthenticationOption-Wert, eine ganze Zahl, die den Seitenindex angibt, eine ganze Zahl, die die Seitengröße angibt, und einen Verweis auf eine ganze Zahl, die auf die Gesamtzahl der Profile festgelegt wird. Gibt eine ProfileInfoCollection mit ProfileInfo-Objekten für alle Profile in der Datenquelle zurück, bei denen der Anwendungsname mit dem ApplicationName-Eigenschaftenwert übereinstimmt. Der ProfileAuthenticationOption-Parameter gibt an, ob nur anonyme Profile, nur authentifizierte Profile oder alle Profile zurückgegeben werden sollen.

Die von der GetAllProfiles-Methode zurückgegebenen Ergebnisse werden durch den Seitenindexwert und den Seitengrößenwert eingeschränkt. Der Seitengrößenwert gibt die maximale Anzahl von ProfileInfo-Objekten an, die in der ProfileInfoCollection zurückgegeben werden können. Der Seitenindexwert gibt an, welche Ergebnisseite zurückgegeben wird. 1 steht für die erste Seite. Der Parameter für die Gesamtzahl der Datensätze ist ein out-Parameter (in Visual Basic können Sie ByRef verwenden), der auf die Gesamtzahl der Profile festgelegt wird. Wenn der Datenspeicher beispielsweise 13 Anwendungsprofile enthält, der Seitenindexwert 6 und die Seitengröße 5 beträgt, dann enthält die zurückgegebene ProfileInfoCollection die Profile 6 bis 10. Der Wert für die Gesamtzahl der Datensätze wird beim Zurückgeben der Methode auf 13 festgelegt.

GetAllInactiveProfiles-Methode

Erfordert als Eingabe einen ProfileAuthenticationOption-Wert, ein DateTime Objekt, eine ganze Zahl, die den Seitenindex angibt, eine ganze Zahl, die die Seitengröße angibt, und einen Verweis auf eine ganze Zahl, die auf die Gesamtzahl der Profile festgelegt wird. Gibt eine ProfileInfoCollection zurück, die ProfileInfo-Objekte für alle Profile der Datenquelle enthält, bei denen das Datum der letzten Aktivität kleiner oder gleich dem Wert von DateTime ist und bei denen der Anwendungsname mit dem ApplicationName-Eigenschaftenwert übereinstimmt. Der ProfileAuthenticationOption-Parameter gibt an, ob nur anonyme Profile, nur authentifizierte Profile oder alle Profile zurückgegeben werden sollen.

Die von der GetAllInactiveProfiles-Methode zurückgegebenen Ergebnisse werden durch den Seitenindexwert und den Seitengrößenwert eingeschränkt. Der Seitengrößenwert gibt die maximale Anzahl von ProfileInfo-Objekten an, die in der ProfileInfoCollection zurückgegeben werden können. Der Seitenindexwert gibt an, welche Ergebnisseite zurückgegeben wird. 1 steht für die erste Seite. Der Parameter für die Gesamtzahl der Datensätze ist ein out-Parameter (in Visual Basic können Sie ByRef verwenden), der auf die Gesamtzahl der Profile festgelegt wird. Wenn der Datenspeicher beispielsweise 13 Anwendungsprofile enthält, der Seitenindexwert 2 und die Seitengröße 5 beträgt, dann enthält die zurückgegebene ProfileInfoCollection die Profile 6 bis 10. Der Wert für die Gesamtzahl der Datensätze wird beim Zurückgeben der Methode auf 13 festgelegt.

FindProfilesByUserName-Methode

Erfordert als Eingabe einen ProfileAuthenticationOption-Wert, eine Zeichenfolge, die einen Benutzernamen enthält, eine ganze Zahl, die den Seitenindex angibt, eine ganze Zahl, die die Seitengröße angibt, und einen Verweis auf eine ganze Zahl, die auf die Gesamtzahl der Profile festgelegt wird. Gibt eine ProfileInfoCollection mit ProfileInfo-Objekten für alle Profile der Datenquelle zurück, bei denen der Benutzername mit dem angegebenen Benutzernamen und der Anwendungsname mit dem ApplicationName-Eigenschaftenwert übereinstimmt. Der ProfileAuthenticationOption-Parameter gibt an, ob nur anonyme Profile, nur authentifizierte Profile oder alle Profile zurückgegeben werden sollen.

Wenn die Datenquelle weitere Suchoptionen wie Platzhalterzeichen unterstützt, können Sie erweiterte Suchfunktionen für Benutzernamen bereitstellen.

Die von der FindProfilesByUserName-Methode zurückgegebenen Ergebnisse werden durch den Seitenindexwert und den Seitengrößenwert eingeschränkt. Der Seitengrößenwert gibt die maximale Anzahl von ProfileInfo-Objekten an, die in der ProfileInfoCollection zurückgegeben werden können. Der Seitenindexwert gibt an, welche Ergebnisseite zurückgegeben wird. 1 steht für die erste Seite. Der Parameter für die Gesamtzahl der Datensätze ist ein out-Parameter (in Visual Basic können Sie ByRef verwenden), der auf die Gesamtzahl der Profile festgelegt wird. Wenn der Datenspeicher beispielsweise 13 Anwendungsprofile enthält, der Seitenindexwert 2 und die Seitengröße 5 beträgt, dann enthält die zurückgegebene ProfileInfoCollection die Profile 6 bis 10. Der Wert für die Gesamtzahl der Datensätze wird beim Zurückgeben der Methode auf 13 festgelegt.

FindInactiveProfilesByUserName-Methode

Erfordert als Eingabe einen ProfileAuthenticationOption-Wert, eine Zeichenfolge, die einen Benutzernamen enthält, ein DateTime-Objekt, eine ganze Zahl, die den Seitenindex angibt, eine ganze Zahl, die die Seitengröße angibt, und einen Verweis auf eine ganze Zahl, die auf die Gesamtzahl der Profile festgelegt wird. Gibt eine ProfileInfoCollection zurück, die ProfileInfo-Objekte für alle Profile der Datenquelle enthält, bei denen der Benutzername mit dem angegebenen Benutzernamen übereinstimmt, bei denen das Datum der letzten Aktivität kleiner oder gleich dem angegebenen DateTime-Wert ist und bei denen der Anwendungsname mit dem ApplicationName-Eigenschaftenwert übereinstimmt. Der ProfileAuthenticationOption-Parameter gibt an, ob nur anonyme Profile, nur authentifizierte Profile oder alle Profile zurückgegeben werden sollen.

Wenn die Datenquelle weitere Suchoptionen wie Platzhalterzeichen unterstützt, können Sie erweiterte Suchfunktionen für Benutzernamen bereitstellen.

Die von der FindInactiveProfilesByUserName-Methode zurückgegebenen Ergebnisse werden durch den Seitenindexwert und den Seitengrößenwert eingeschränkt. Der Seitengrößenwert gibt die maximale Anzahl von ProfileInfo-Objekten an, die in der ProfileInfoCollection zurückgegeben werden können. Der Seitenindexwert gibt an, welche Ergebnisseite zurückgegeben wird. 1 steht für die erste Seite. Der Parameter für die Gesamtzahl der Datensätze ist ein out-Parameter (in Visual Basic können Sie ByRef verwenden), der auf die Gesamtzahl der Profile festgelegt wird. Wenn der Datenspeicher beispielsweise 13 Anwendungsprofile enthält, der Seitenindexwert 2 und die Seitengröße 5 beträgt, dann enthält die zurückgegebene ProfileInfoCollection die Profile 6 bis 10. Der Wert für die Gesamtzahl der Datensätze wird beim Zurückgeben der Methode auf 13 festgelegt.

GetNumberOfInactiveProfiles-Methode

Erfordert als Eingabe einen ProfileAuthenticationOption-Wert sowie ein DateTime-Objekt und gibt eine Zählung aller Profile der Datenquelle zurück, bei denen das Datum der letzten Aktivität kleiner oder gleich dem angegebenen DateTime-Wert ist und bei denen der Anwendungsname mit dem ApplicationName-Eigenschaftenwert übereinstimmt. Der ProfileAuthenticationOption-Parameter gibt an, ob nur anonyme Profile, nur authentifizierte Profile oder alle Profile gelöscht werden sollen.

ApplicationName

Da Profilanbieter Profilinformationen für jede Anwendung getrennt speichern, müssen Datenschema, Abfragen sowie Aktualisierungen den Anwendungsnamen enthalten. Z. B. wird der folgende Befehl verwendet, um einen Eigenschaftenwert aus einer Datenbank abzurufen, und zwar auf Grundlage des Benutzernamens und der Tatsache, dass das Profil nicht anonym ist. Außerdem wird durch den Befehl sichergestellt, dass die Abfrage den ApplicationName-Wert enthält.

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

Siehe auch

Aufgaben

Gewusst wie: Erstellen und Ausführen des Beispiels für Profilanbieter

Konzepte

Übersicht über ASP.NET-Profileigenschaften

ASP.NET-Profilanbieter