Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Obtention d'une erreur de création automatique de fichier de base de données SQLExpress pour le site qui utilise AspNetSqlMembershipProvider, mais la chaîne de connexion est à SQL Server 2005

D'après votre commentaire, il semble que vous n'ayez pas explicitement configuré de fournisseur de rôles pour votre site.

Si tout ce qui se trouve dans votre web.config est :

<roleManager enabled="true" />

Ensuite, vous vous appuyez sur les fournisseurs par défaut déclarés plus haut dans la hiérarchie de configuration (machine.config, global web.config, etc.)

Dans machine.config, vous avez probablement quelque chose comme :

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

Comme vous pouvez le voir, le premier fournisseur est configuré pour utiliser une chaîne de connexion appelée LocalSqlServer - qui est également généralement déclarée dans le fichier machine.config :

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

Et ceci est conçu pour utiliser une base de données locale basée sur des fichiers qui sera créée si elle n'existe pas déjà.

Donc, pour que les rôles fonctionnent sur votre site, vous devez modifier votre racine web.config en quelque chose comme :

<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'utilisation de l'élément supprimera tous les fournisseurs précédemment définis pour ce type.