2009-06-23 12 views
1

Ich habe eine ASP.NET-Site in Entwicklung auf meinem Computer. Es hat seine eigene sqlserver Datenbank. Aus irgendeinem Grund scheint das Mitgliedschaftsanbietersystem zwei Anwendungsdatensätze für das Projekt zu erstellen. Dies verursacht Probleme für mich, da das Mitgliedschaftssystem für jeden Benutzer im System zwei Datensätze erstellt, einen für jeden Anwendungsdatensatz. Warum passiert das und wie schalte ich es aus?ASP.NET-Mitgliedschaft - 2 Anwendungs-ID-Datensätze

Der Hauptgrund, das ist ein Problem ist, dass ich den Benutzernamen verwenden, um die membershipID eines jeden neuen Benutzer zu erholen und so können die Mitglieder zu anderen Tabellen wir für die Datenspeicherung schaffen in Beziehung gesetzt werden.

Alle Vorschläge oder Referenzen würden geschätzt.

Dank

Doug

Antwort

7

Dies geschieht in der Regel, wenn Sie keinen Namen für das „application“ Attribut des Mitgliedschaftsanbieters angeben. Dies führt dazu, dass der Mitgliedschaftsanbieter den vroot-Pfad Ihres Webservers verwendet.

Im Beispiel unten Sie den Standardwert des Attributs application sehen können, wenn Sie nicht spezifiziert:

<membership> 
<providers> 
    <clear/> 
    <add name="AspNetSqlMembershipProvider" 
     type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     connectionStringName="LocalSqlServer" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="true" 
     requiresUniqueEmail="false" 
     passwordFormat="Hashed" 
     maxInvalidPasswordAttempts="5" 
     minRequiredPasswordLength="7" 
     minRequiredNonalphanumericCharacters="1" 
     passwordAttemptWindow="10" 
     passwordStrengthRegularExpression="" 
     applicationName="/" 
    /> 
</providers> 

Also, wenn Sie zum Beispiel Ihre Anwendung bewegen sich von einem Ordner zu einem anderen, eine neue Anwendung wird in der Mitgliederdatenbank erstellt.

Die Art und Weise, dies zu lösen ist, einen Namen zu Ihrem „application“ Attribut zu geben. Wenn Sie bereits Mitgliedschaftsdaten haben, die Sie verwenden möchten, können Sie das Attribut als einen Ihrer vorhandenen Anwendungsnamen benennen. Dies ist die Spalte "ApplicationName" der Tabelle "aspnet_Application".

ScottGu hatte einen guten Beitrag zu diesem Thema hier:

Always set the "applicationName" property when configuring ASP.NET 2.0 Membership and other Providers