Übersicht über ASP.NET-Profileigenschaften

Aktualisiert: November 2007

In vielen Anwendungen sollen Informationen gespeichert und verwendet werden, die einem Benutzer eindeutig zuzuordnen sind. Wenn ein Benutzer die Site besucht, können Sie ihm mithilfe der gespeicherten Informationen eine persönliche Version der Webanwendung präsentieren. Die Personalisierung einer Anwendung erfordert eine Reihe von Elementen: Sie müssen die Informationen mit einer eindeutigen Benutzer-ID speichern, Benutzer beim erneuten Besuch der Site wiedererkennen können und dann die erforderlichen Benutzerinformationen wieder abrufen. Zur Vereinfachung der Anwendungen können Sie das ASP.NET-Profilfeature verwenden, das alle diese Aufgaben für Sie übernehmen kann.

Das ASP.NET-Profilfeature ordnet Informationen einem einzelnen Benutzer zu und speichert diese in einem persistenten Format. Über Profile können Sie Benutzerinformationen verwalten, ohne eine eigene Datenbank erstellen und pflegen zu müssen. Außerdem stellt das ASP.NET-Profilfeature die Benutzerinformationen mithilfe einer stark typisierten API zur Verfügung, auf die Sie von überall in Ihrer Anwendung zugreifen können.

Sie können Objekte eines beliebigen Typs mithilfe von Profilen speichern. Das Profilfeature stellt ein generisches Speicherfeature dar, mit dem Sie praktisch alle Arten von Daten definieren und verwalten können. Trotzdem können Sie damit Daten typsicher zur Verfügung stellen.

So funktionieren ASP.NET-Profile

Um sie verwenden zu können, müssen Profile zuerst aktiviert werden, indem Sie die Konfigurationsdatei für die ASP.NET-Webanwendung ändern. Als Teil der Konfiguration geben Sie einen Profilanbieter an. Dies ist die zugrunde liegende Klasse, die Aufgaben auf niedriger Ebene wie das Speichern und Abrufen von Profildaten ausführt. Sie können den Profilanbieter verwenden, der Teil von .NET Framework ist und Profildaten in SQL Server speichert, oder Sie erstellen und verwenden Ihren eigenen Profilanbieter. Dies wird im Thema Implementieren eines Profilanbieters beschrieben. Sie können eine Instanz von SqlProfileProvider angeben, die eine Verbindung zu einer Datenbank Ihrer Wahl herstellt, oder Sie verwenden die Standardinstanz von SqlProfileProvider, die Profildaten auf dem lokalen Webserver speichert.

Sie konfigurieren das Profilfeature, indem Sie eine Liste mit Eigenschaften definieren, deren Werte Sie speichern möchten. Sie könnten z. B. die Postleitzahl des Benutzers speichern, damit Ihre Anwendung regionsspezifische Informationen (beispielsweise einen Wetterbericht) anbieten kann. In der Konfigurationsdatei würden Sie dazu eine Profileigenschaft mit dem Namen PostalCode definieren. Der profile-Abschnitt der Konfigurationsdatei könnte wie folgt aussehen:

<profile>
  <properties>
    <add name="PostalCode" />
  </properties>
</profile>

Wenn die Anwendung ausgeführt wird, erstellt ASP.NET eine ProfileCommon-Klasse. Dies ist eine dynamisch generierte Klasse, die die ProfileBase-Klasse erbt. Die dynamische ProfileCommon-Klasse enthält Eigenschaften, die aus den Profileigenschaftendefinitionen erstellt werden, die Sie in der Anwendungskonfiguration angegeben haben. Eine Instanz dieser dynamischen ProfileCommon-Klasse wird als Wert der Profile-Eigenschaft des aktuellen HttpContext festgelegt und ist für Seiten der Anwendung verfügbar.

In der Anwendung sammeln Sie die Werte, die Sie speichern möchten, und weisen sie den von Ihnen definierten Profileigenschaften zu. Zum Beispiel könnte die Homepage der Anwendung ein Textfeld enthalten, das den Benutzer zur Eingabe einer Postleitzahl auffordert. Wenn der Benutzer eine Postleitzahl eingibt, legen Sie eine Profile-Eigenschaft fest, in der der Wert für den aktuellen Benutzer gespeichert wird, wie im folgenden Beispiel:

Profile.PostalCode = txtPostalCode.Text
Profile.PostalCode = txtPostalCode.Text;

Wenn Sie einen Wert für Profile.PostalCode festlegen, wird der Wert automatisch für den aktuellen Benutzer gespeichert. Sie müssen keinerlei Code schreiben, um zu bestimmen, wer der aktuelle Benutzer ist, oder den Wert explizit in der Datenbank zu speichern – diese Aufgaben führt das Profilfeature für Sie aus.

Um den Wert zu verwenden, können Sie ihn fast genauso abrufen, wie Sie ihn festgelegt haben. Das folgende Codebeispiel veranschaulicht, wie eine imaginäre Funktion mit dem Namen GetWeatherInfo aufgerufen und ihr die im Profil gespeicherte PLZ des aktuellen Benutzers übergeben wird:

weatherInfo = GetWeatherInfo( Profile.PostalCode )
weatherInfo = GetWeatherInfo( Profile.PostalCode );

Sie müssen nicht explizit bestimmen, wer der Benutzer ist, und müssen auch keine Datenbanksuche durchführen. Allein das Abrufen des Eigenschaftenwerts aus einem Profil führt dazu, dass ASP.NET die erforderlichen Aktionen ausführt, um den aktuellen Benutzer zu identifizieren und den Wert im persistenten Profilspeicher zu suchen.

Siehe auch

Konzepte

Übersicht über ASP.NET-Profileigenschaften

Benutzeridentifizierung für ASP.NET-Profileigenschaften

Definieren von ASP.NET-Profileigenschaften

ASP.NET-Profilanbieter