Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottenere l'errore di creazione automatica del file di database SQLExpress per il sito che utilizza AspNetSqlMembershipProvider, ma la stringa di connessione è a SQL Server 2005

Secondo il tuo commento, sembra che tu non abbia configurato esplicitamente un provider di ruoli per il tuo sito.

Se tutto ciò che è nel tuo web.config è:

<roleManager enabled="true" />

Quindi ti affidi ai provider predefiniti dichiarati più in alto nella gerarchia di configurazione (machine.config, global web.config, ecc.)

In machine.config probabilmente hai qualcosa come:

<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>

Come puoi vedere, il primo provider è configurato per utilizzare una connectionString chiamata LocalSqlServer, che di solito è anche dichiarata in machine.config:

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

E questo è progettato per utilizzare un database basato su file locale che verrà creato se non esiste già.

Quindi, per far funzionare i ruoli sul tuo sito, dovresti modificare il tuo web.config root in qualcosa del tipo:

<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>

L'utilizzo dell'elemento rimuoverà tutti i provider precedentemente definiti per quel tipo.