Achtung: Diese Variante funktioniert nicht mit einer Windows Azure Datenbank. Dafür habe ich einen eigenen Artikel erstellt!
Grundsätzlich erstellt Visual Web Express die Datenbankstruktur für den Membership-Provider in einer eigenen Datenbank. Es kann allerdings notwendig sein, die DB-Struktur zu einer bestehenden Datenbank hinzuzufügen.
Hier findet sich die Anleitung, wie man die DB-Struktur einer bestehenden .MDF-SQL-Server-Express-Datei hinzufügt.
Um die Datenbankstruktur für den Asp.Net-Membership-Provider zu erstellen, gibt es ein mitgeliefertes Tool.
Anschließend muss man nur noch die web.config konfigurieren, um Asp.Net mitzuteilen, wo die Daten liegen.
Das Problem: Das Tool kann standardmäßig nur auf einen „richtigen“ SQL-Server zugreifen und fängt nichts mit dem SQL-Express-Developement-Server an, der Visual Web Express beiliegt. Daher gibt es folgende Vorgehensweise:
Inhaltsverzeichnis
Vorbereitende Tätigkeiten
Das Tool Aspnet_RegSQL benötigt zwei Angaben: Den Server und die Datenbank.
Der Server ist bei einem SQLExpress-Server meistens „localhost\SQLExpress“.
Die Datenbank ist im Normalfall nicht so leicht einzustellen: Man muss mit dem SQL Management Studio die .MDF-Datei der SQL-Serverinstanz zuordnen und einen Namen vergeben. Daher benötigt man diesen Download (s. u.).
1. Die MDF-Datei erstellen (im Visual Web Express) oder eine bestehende zur Webite hinzufügen
2. Das SQL Management Studio öffnen und mit localhost\SQLExpress verbinden
3. Rechtsklick auf „Datenbanken“ und „Anfügen“ wählen und die .MDF-Datei hinzuverbinden. In der Spalte „Anfügen Als“ einfach einen einfacheren Namen vergeben.
Die Datenbankstruktur erstellen
Dies kann man zwar händisch machen; empfohlen wird allerdings, das Tool „aspnet_regsql.exe“ zu verwenden.
Diese Tool befindet sich im Verzeichnis %WINDIR%\Microsoft.Net\Framework\v2.0.50727.
Nach Start des Tools kommt ein Wizard. Als Server gibt man ein: „localhost\SQLExpress“, man wählt „Windows-Authentifizierung“ und als Datenbank den oben vergebenen Namen.
Nun wird die DB-Struktur erstellt.
Eintrag des Connection-Strings in der web.config
Damit unsere Website auf die Datenbank zugreifen kann, muss man in der zentralen Konfigurationsdatei „web.config“ den ConnectionString definieren.
Diesen kann man entweder händisch erstellen, oder man lässt sich von Visual Web Express folgendermaßen helfen:
Man öffnet eine .aspx-Datei, wählt Toolbox > SQLDataSource und erstellt hiermit den Connection-String. Das Element kann man anschließend wieder löschen.
Damit wird z. B. folgendes erstellt:
<connectionStrings>
<add name="ConStrLoginTest2Users" connectionString="Data Source=localhost\SQLExpress;Initial Catalog=LoginTest2Users;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Eintrag des Membership-Providers in der web.config
Nun muss man noch den Membership-Provider definieren, damit dieser auf den richtigen Connection-String zeigt. Dazu löscht man die folgende Zeile untere configuration/system.web:
<authentication mode="Windows" />
und fügt stattdessen folgendes ein (natürlich mit Anpassen des Connection-Strings (2x):
<authentication mode="Forms" >
<forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<machineKey validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" validation="SHA1" />
<roleManager enabled="true" defaultProvider="CustomizedRoleProvider">
<providers>
<add name="CustomizedRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="ConStrLoginTest2Users" />
</providers>
</roleManager>
<membership defaultProvider="CustomizedMembershipProvider">
<providers>
<add name="CustomizedMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ConStrLoginTest2Users" />
</providers>
</membership>
Security-Einstellungen festlegen
In der web.config fügen wir – gleich unter der Zeile </connectionStrings> – weiters folgende Zeilen ein:
<location path="CreateUser.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<location path="RetrievePassword.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
Nacharbeiten
Stellen Sie sicher, dass alle oben genannten Dateien (Login.aspx, …) existieren.
Quellen
Membership-DB-Struktur zu einer bestehenden DB hinzufügen:
Microsoft® SQL Server® 2008 Management Studio Express (alt?):
Microsoft® SQL Server® 2008 Management Studio Express (neu):
Connection-String zusammenbauen:
Recherche-Quellen (alt)
Beispiel zum Erstellen der DB-Struktur in MDF-Dateien:
http://weblogs.asp.net/lhunt/archive/2005/09/26/425966.aspx
Dateien im SQL Server Express richtig ansprechen:
http://scottonwriting.net/sowblog/posts/5480.aspx
Übersicht über die Parameter von aspnet_regsql.exe:
http://msdn.microsoft.com/en-us/library/ms229862(VS.80).aspx