Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fehler beim automatischen Erstellen der SQLExpress-Datenbankdatei für Sites, die AspNetSqlMembershipProvider verwenden, aber die Verbindungszeichenfolge ist für SQL Server 2005

Laut Ihrem Kommentar haben Sie offenbar keinen Rollenanbieter für Ihre Site konfiguriert.

Wenn alles, was in Ihrer web.config steht:

<roleManager enabled="true" />

Dann verlassen Sie sich auf die Standardanbieter, die weiter oben in der Konfigurationshierarchie deklariert sind (machine.config, global web.config usw.)

In machine.config haben Sie wahrscheinlich so etwas wie:

<roleManager>
  <providers>
    <add name="AspNetSqlRoleProvider" 
      connectionStringName="LocalSqlServer" 
      applicationName="/" 
      type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    <add name="AspNetWindowsTokenRoleProvider" 
      applicationName="/" 
      type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </providers>
</roleManager>

Wie Sie sehen können, ist der erste Anbieter so konfiguriert, dass er einen connectionString namens LocalSqlServer verwendet – der normalerweise auch in der machine.config deklariert ist:

<add name="LocalSqlServer" 
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
     providerName="System.Data.SqlClient"/>

Und dies wurde entwickelt, um eine lokale dateibasierte Datenbank zu verwenden, die erstellt wird, falls sie noch nicht existiert.

Damit also Rollen auf Ihrer Website funktionieren, sollten Sie Ihre root-web.config in etwas wie das folgende ändern:

<roleManager enabled="true">
  <providers>
    <clear />
    <add name="AspNetSqlRoleProvider" 
      connectionStringName="YourConnectionStringName" 
      applicationName="/" 
      type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </providers>
</roleManager>

Die Verwendung des Elements entfernt alle zuvor definierten Anbieter für diesen Typ.