Instalação padrão do Membership, Roles e Profile


As funcionalidades Membership, Roles e Profile do ASP.NET 2.0 vem por padrão habilitadas. A questão é que essa configuração padrão demanda ter instalado na máquina onde corre a aplicação (geralmente a máquina do desenvolvedor), o SQL Server Express.

Em uma aplicação recém criada não haverá nenhuma configuração no arquivo Web.Config. Se analisarmos algumas seções que estão presentes do arquivo machine.config, temos:

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

<membership>
    <providers>
        <add name=”AspNetSqlMembershipProvider” type=”System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” connectionStringName=”LocalSqlServer” …. />
    </providers>
</membership>

Com isso, quando iniciamos o ASP.NET Configuration, ele irá tentar acessar (ou criar) esta base de dados. Se não tiver o SQL Server Express instalado, esse processo resultará em um erro. Para resolver, voce tem duas alternativas:

  1. Instalar o SQL Server Express.
  2. Configurar para um servidor SQL Server existente. Se optar por essa alternativa, voce deve configurar o seu arquivo Web.Config da seguinte forma:

<?xml version=”1.0″?>
<configuration>
  <connectionStrings>
    <clear/>
    <add
      name=”SqlConnectionString”
      connectionString=”Data Source=local;Initial Catalog=BaseDeDados;Integrated Security=True;”/>
  </connectionStrings>
  <system.web>
    <membership defaultProvider=”SqlMembershipProvider”>
      <providers>
        <clear/>
        <add
          name=”SqlMembershipProvider”
          type=”System.Web.Security.SqlMembershipProvider”
          connectionStringName=”SqlConnectionString”
          ….. />
      </providers>
    </membership>
  </system.web>
</configuration>

É importante notar que o elemento <clear /> remove a conexão e o provider do membership que são configurados por padrão. Além dessa configuração prévia, voce precisará também criar os objetos (tabelas, stored procedures e views) necessários para que essas funcionalidades trabalhem. Para isso, voce utilizará o utilitário aspnet_regsql.exe e pode encontrar maiores informações aqui.

Anúncios

7 comentários sobre “Instalação padrão do Membership, Roles e Profile

    • Olá Israel,

      vou colocar minhas configurações do meu web.config

      <connectionStrings>
      <clear/>
      <add name="instiadConnectionString" connectionString="Data Source=WHE-LAPTOPSQLEXPRESS;Initial Catalog=instiad;Integrated Security=true"
      providerName="System.Data.SqlClient" />
      </connectionStrings>

      <roleManager enabled="true" defaultProvider="RoleManagerInstiad">
      <providers>
      <add connectionStringName="instiadConnectionString"
      name="RoleManagerInstiad" type="System.Web.Security.SqlRoleProvider" />
      </providers>
      </roleManager>

      <membership defaultProvider="InstiadCustomMemberShipProvider" >
      <providers>
      <clear/>
      <add
      name="InstiadCustomMemberShipProvider"
      minRequiredPasswordLength="2"
      minRequiredNonalphanumericCharacters="0"
      type="System.Web.Security.SqlMembershipProviderSystem, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      connectionStringName="instiadConnectionString"
      applicationName="instiad"
      passwordFormat="Hashed"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true"
      writeExceptionsToEventLog="true"

      />
      </providers>
      </membership>

      Ao fazer o login, ele acusa erro em membership no argumento type="System.Web.Security.SqlMembershipProviderSystem, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

      Você saberia o por que desse erro? será que é necessário criar um custom do membership?

      abraços

    • Oi Israel, obrigado por responder.

      alterei corretamente como voce mencionou:

      <membership defaultProvider="InstiadCustomMemberShipProvider" >
      <providers>
      <clear/>
      <add
      name="InstiadCustomMemberShipProvider"
      minRequiredPasswordLength="2"
      minRequiredNonalphanumericCharacters="0"
      [b]type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"[/b]
      connectionStringName="instiadConnectionString"
      applicationName="instiad"
      passwordFormat="Hashed"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true"
      writeExceptionsToEventLog="true"

      />
      </providers>
      </membership>

      E mesmo assim, ele esta acusando erro nessa linha…

      Consegui corrigir o erro alterando o machine.config adicionando a minha connection string:

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

      [b] <add name="instiadConnectionString" connectionString="Data Source=WHE-LAPTOPSQLEXPRESS;Initial Catalog=instiad;Integrated Security=true"
      providerName="System.Data.SqlClient" />[/b]

      </connectionStrings>

      parece que a minha aplicaçào web não está enchergando a minha connection string do web.config. Mas na parte de codificação em C# eu consigo conversar com o banco sem nenhum problema….

      Será que não tem como corrigir esse problema?

      Brigadão Israel

    • Olá estou com o um problema com o membership que eh o seguindo localmente o membership funciona perfeitamente (tanto com o banco de dados localmente como naum)

      Mas quando dou um publish no no sistema apesar de a comunicação do banco de dados estar funcionando perfeitamente não consigo acessar os dados do membership (logar, criar usuario etc). Um fato estranho tbm eh que o sistema do aspnet para logar fikou em ingles.

      Alguem tem alguma solução ?

      Obrigado

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s