Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Jason Lee
Hinweis
Da dieser Artikel geschrieben wurde, werden die ASP.NET Mitgliedschaftsanbieter von ASP.NET Identity abgelöst. Es wird dringend empfohlen, Apps so zu aktualisieren, dass sie die ASP.NET Identity Platform anstelle der Mitgliedschaftsanbieter verwenden, die zu dem Zeitpunkt dieses Artikels vorgestellt wurden. ASP.NET Identity hat eine Reihe von Vorteilen gegenüber dem ASP.NET Mitgliedschaftssystem, darunter:
- Bessere Leistung
- Verbesserte Erweiterbarkeit und Testbarkeit
- Unterstützung für OAuth, OpenID Connect und zweistufige Authentifizierung
- Anspruchsbasierte Identitätsunterstützung
- Bessere Interoperabilität mit ASP.Net Core
In diesem Thema werden die wichtigsten Überlegungen und Herausforderungen erläutert, die Sie überwinden müssen, wenn Sie ASP.NET Anwendungsdienstdatenbanken (häufiger als Mitgliedschaftsdatenbanken bezeichnet) in Test-, Staging- oder Produktionsumgebungen bereitstellen. Außerdem werden Ansätze beschrieben, die Sie zur Bewältigung dieser Herausforderungen verwenden können.
Dieses Thema ist Teil einer Reihe von Lernprogrammen basierend auf den Anforderungen an die Unternehmensbereitstellung eines fiktiven Unternehmens namens Fabrikam, Inc. In dieser Lernprogrammreihe wird eine Beispiellösung – die Contact Manager-Lösung – verwendet, um eine Webanwendung mit einer realistischen Komplexitätsstufe darzustellen, einschließlich einer ASP.NET MVC 3-Anwendung, einem WCF-Dienst (Windows Communication Foundation) und einem Datenbankprojekt.
Die Bereitstellungsmethode im Mittelpunkt dieser Lernprogramme basiert auf dem geteilten Projektdateiansatz, der unter "Grundlegendes zur Projektdatei" beschrieben wird, in dem der Buildprozess von zwei Projektdateien gesteuert wird– eine mit Buildanweisungen, die für jede Zielumgebung gelten, und eine mit umgebungsspezifischen Build- und Bereitstellungseinstellungen. Zur Build-Zeit wird die umgebungsspezifische Projektdatei in die umgebungsunabhängige Projektdatei zusammengeführt, um einen vollständigen Satz von Build-Anweisungen zu bilden.
Welche Probleme treten bei der Bereitstellung einer Mitgliedschaftsdatenbank auf?
Wenn Sie in den meisten Fällen eine Bereitstellungsstrategie für eine Datenbank entwickeln, müssen Sie zunächst berücksichtigen, welche Daten Sie bereitstellen möchten. In einer Entwicklungs- oder Testumgebung möchten Sie möglicherweise Benutzerkontodaten bereitstellen, um schnelle und einfache Tests zu erleichtern. In einer Staging- oder Produktionsumgebung ist es sehr unwahrscheinlich, dass Sie Benutzerkontodaten bereitstellen möchten.
Leider führen ASP.NET Mitgliedschaftsdatenbanken einige spezifische Herausforderungen ein, die diese Entscheidung viel komplexer machen:
- Eine nur schemabasierte Bereitstellung belässt die Mitgliedschaftsdatenbank in einem nicht betriebsbereiten Zustand. Dies liegt daran, dass die Mitgliedschaftsdatenbank einige Konfigurationsdaten (in der aspnet_SchemaVersions Tabelle) enthält, die für die Funktion der Datenbank erforderlich sind. Wenn Sie beispielsweise eine nur schemabasierte Bereitstellung Ihrer Mitgliedschaftsdatenbank ausführen, um Benutzerkontodaten auszuschließen, müssen Sie ein Skript nach der Bereitstellung ausführen, um die wesentlichen Konfigurationsdaten hinzuzufügen.
- Je nachdem, wie Ihre Mitgliedschaftsdatenbank konfiguriert ist, kann der Mitgliedschaftsanbieter den Computerschlüssel verwenden, um Kennwörter zu verschlüsseln und in der Datenbank zu speichern. In diesem Fall können alle Benutzerkontodaten, die Sie mit der Datenbank bereitstellen, auf dem Zielserver nicht mehr verwendet werden. Aus diesem Grund ist die Bereitstellung von Benutzerkontodaten kein unterstütztes Szenario.
Auswählen einer Mitgliedschaftsdatenbankstrategie
Verwenden Sie diese Richtlinien, wenn Sie auswählen, wie eine Mitgliedschaftsdatenbank in einer Unternehmensserverumgebung bereitgestellt werden soll:
- Stellen Sie nach Möglichkeit keine Mitgliedschaftsdatenbanken bereit. Erstellen Sie stattdessen die Mitgliedschaftsdatenbank manuell auf dem Zieldatenbankserver. Wenn Sie Ihr Mitgliedschaftsdatenbankschema noch nicht angepasst haben, können Sie einfach ein neues Datenbankschema am Ziel erstellen, indem Sie das ASP.NET SQL Server-Registrierungstool (aspnet_regsql.exe) verwenden.
- Wenn Sie keine Möglichkeit haben, aber eine Mitgliedschaftsdatenbank bereitzustellen, z. B. wenn Sie umfangreiche Änderungen am Datenbankschema vorgenommen haben, sollten Sie eine nur schemabasierte Bereitstellung der Mitgliedschaftsdatenbank ausführen, Benutzerkontodaten ausschließen und dann ein Skript nach der Bereitstellung ausführen, um alle erforderlichen Konfigurationsdaten hinzuzufügen. Allgemeine Anleitungen zu diesen Ansätzen finden Sie unter How to: Deploy the ASP.NET Membership Database Without Including User Accounts.
Es ist wichtig zu beachten, dass das Schema Ihrer Mitgliedschaftsdatenbank wahrscheinlich ziemlich statisch ist. Selbst wenn Sie die Mitgliedschaftsdatenbank angepasst haben, ist es unwahrscheinlich, dass Sie das Schema regelmäßig aktualisieren müssen – es wird nicht mit der gleichen Häufigkeit wie der Code in einer Webanwendung oder einem Datenbankprojekt geändert. Daher sollten Sie die Mitgliedschaftsdatenbank nicht in automatisierte oder einzelstufige Bereitstellungsprozesse einbeziehen müssen.
Verwenden von VSDBCMD zum Aktualisieren eines Mitgliedschaftsdatenbankschemas
Wenn Sie die Struktur Ihrer Mitgliedschaftsdatenbank nach der ersten Bereitstellung ändern, möchten Sie möglicherweise nicht das Iis-Webbereitstellungstool (InternetInformationsdienste) (Web Deploy) verwenden, um die Datenbank erneut bereitzustellen. Die Datenbankbereitstellungsfunktionalität in Web Deploy enthält nicht die Möglichkeit, differenzielle Aktualisierungen an einer Zieldatenbank vorzunehmen. Stattdessen muss Web Deploy die Datenbank ablegen und neu erstellen. Dies bedeutet, dass alle vorhandenen Benutzerkontodaten verloren gehen, was in der Regel in Staging- oder Produktionsumgebungen nicht erwünscht ist.
Die Alternative besteht darin, das VSDBCMD-Hilfsprogramm zum Aktualisieren des Schemas Ihrer Zieldatenbank zu verwenden. VSDBCMD umfasst zwei wichtige Funktionen. Zunächst kann das Schema einer vorhandenen Datenbank in eine DBSCHEMA-Datei importiert werden. Zweitens kann sie eine DBSCHEMA-Datei als differenzielles Update in einer vorhandenen Datenbank bereitstellen, was bedeutet, dass nur die änderungen vorgenommen werden, die erforderlich sind, um die Zieldatenbank auf dem neuesten Stand zu bringen, und Sie verlieren keine Daten.
Sie können diese allgemeinen Schritte verwenden, um ein Mitgliedschaftsdatenbankschema zu aktualisieren:
- Verwenden Sie die VSDBCMD-Importaktion , um eine DBSCHEMA-Datei für Ihre Quellmitgliedschaftsdatenbank zu generieren. Dieses Verfahren wird in How to: Import a Schema from a Command Prompt beschrieben.
- Verwenden Sie die VSDBCMD Deploy-Aktion , um die DBSCHEMA-Datei in Ihrer Zielmitgliedschaftsdatenbank bereitzustellen. Dieses Verfahren wird in Befehlszeilenreferenz für VSDBCMD.EXE (Bereitstellungs- und Schema-Import) beschrieben.
Fazit
In diesem Thema wurden einige der Herausforderungen beschrieben, denen Sie möglicherweise begegnen können, wenn Sie ASP.NET Mitgliedschaftsdatenbanken in verschiedenen Zielumgebungen bereitstellen müssen. Insbesondere wurde erläutert, warum nur Schemabereitstellungen die Mitgliedschaftsdatenbank in einem nicht betriebsfähigen Zustand belassen und warum die Bereitstellung von Benutzerkontodaten nicht unterstützt wird. Das Thema enthält außerdem Anleitungen zum Bereitstellen, Bereitstellen und Aktualisieren von Mitgliedschaftsdatenbanken in verschiedenen Szenarien.
Weiterführende Lektüre
Weitere Anleitungen und Beispiele für die Verwendung von VSDBCMD finden Sie unter Command-Line Reference for VSDBCMD.EXE (Deployment and Schema Import) und How to: Import a Schema from a Command Prompt. Weitere Informationen zur Verwendung von aspnet_regsql.exe zum Erstellen von Mitgliedschaftsdatenbanken finden Sie unter