Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Obtendo o erro de criação automática do arquivo de banco de dados SQLExpress para o site que usa AspNetSqlMembershipProvider, mas a cadeia de conexão é para o SQL Server 2005


De acordo com seu comentário, parece que você não configurou explicitamente um provedor de função para seu site.

Se tudo o que estiver no seu web.config for:
<roleManager enabled="true" />

Então você está confiando nos provedores padrão declarados mais acima na hierarquia de configuração (machine.config, global web.config, etc)

Em machine.config você provavelmente tem 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 você pode ver, o primeiro provedor está configurado para usar uma connectionString chamada LocalSqlServer - que também é normalmente declarada no machine.config:
<add name="LocalSqlServer" 
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
     providerName="System.Data.SqlClient"/>

E isso é projetado para usar um banco de dados baseado em arquivo local que será criado se ainda não existir.

Então, para que as funções funcionem em seu site, você deve alterar seu web.config raiz para 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>

O uso do elemento removerá todos os provedores definidos anteriormente para esse tipo.