sql >> Base de Datos >  >> RDS >> Sqlserver

Obteniendo un error de creación automática del archivo de base de datos SQLExpress para el sitio que usa AspNetSqlMembershipProvider, pero la cadena de conexión es para SQL Server 2005

Según su comentario, parece que no ha configurado explícitamente un proveedor de funciones para su sitio.

Si todo lo que está en su web.config es:

<roleManager enabled="true" />

Entonces confía en los proveedores predeterminados declarados más arriba en la jerarquía de configuración (machine.config, global web.config, etc.)

En machine.config probablemente tengas algo como:

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

Como puede ver, el primer proveedor está configurado para usar una cadena de conexión llamada LocalSqlServer, que también suele declararse en machine.config:

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

Y esto está diseñado para usar una base de datos basada en archivos locales que se creará si aún no existe.

Entonces, para que los roles funcionen en su sitio, debe modificar su raíz web.config a algo como:

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

El uso del elemento eliminará todos los proveedores definidos previamente para ese tipo.