Fórum Providers - tabela aspnet_roles sem registro #377096

06/05/2010

0

Boa tarde!   Tenho uma solution com 2 tipos de projeto, um web application e um class library. No projeto class library tenho uma classe que adiciona uma role, ela faz uso da classe Roles do namespace System.Web.Security (eu adicionei o namespace System.Web no projeto da class library).   Após adicionar a role, se eu acessar pelo Visual Studio o menu Project >> ASP.NET Configuration, e na ferramenta de configuração eu acessar a aba Security e o link "Create or Manage roles", consigo visualizar os papéis que adicionei pelo projeto.   Porém, se eu efetuar um SELECT na tabela aspnet_roles, não me retorna nenhum registro.   Vocês saberiam me auxiliar para eu identificar o que está acontecendo?   Obrigado!
Carlos Nogueira

Carlos Nogueira

Responder

Posts

06/05/2010

Fabio Mans

Você tem certeza que está no banco correto?

O banco está na pasta App_Data ou no Banco SQL?

Fabio
Responder

Gostei + 0

06/05/2010

Fabio Mans

Você tem certeza que está no banco correto?

O banco está na pasta App_Data ou no Banco SQL?

Fabio
Responder

Gostei + 0

06/05/2010

Carlos Nogueira

Sim sim, tenho certeza sim, conferi a connectionstring no meu arquivo web.config e está apontando para o banco que efetuei o SELECT.
O que você sugere? Você acha que seria interessante eu criar outro banco no SQL Server e executar a ferramenta aspnet_regsql.exe para gerar as tabelas do provider (acho que é assim que se fala né?) neste novo banco e tentar efetuar o cadastro do role novamente?

Responder

Gostei + 0

07/05/2010

Fabio Mans

Seu banco está no App_Data ou no SQL?
Responder

Gostei + 0

10/05/2010

Carlos Nogueira

Esta no SQL
Responder

Gostei + 0

10/05/2010

Fabio Mans

Quer fazer um backup e passar o arquivo para que eu veja?


Responder

Gostei + 0

10/05/2010

Carlos Nogueira

Sim, eu efetuei o backup mas não consigo localizar onde posso fazer upload do mesmo. Eu fui no botão "File Upload" e ele abriu uma janela dizendo que o recurso não está disponível, pediu para usar o "Associar Download" na Central do Autor. Você sabe como posso proceder?
Responder

Gostei + 0

10/05/2010

Fabio Mans

Pode mandar para o meu email fgmans@gmail.com

Fabio
Responder

Gostei + 0

10/05/2010

Carlos Nogueira

Fabio, Tentei te encaminhar o anexo para o e-mail informado no post anterior mas recebi a mensagem de erro abaixo: I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below.   For further assistance, please send mail to postmaster.   If you do so, please include this problem report. You can delete your own text from the attached returned message.                      The mail system   <fgmans@gmail.com>: host gmail-smtp-in.l.google.com[209.85.210.12] said:     550-5.1.1 The email account that you tried to reach does not exist. Please     try 550-5.1.1 double-checking the recipient's email address for typos or     550-5.1.1 unnecessary spaces. Learn more at     550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596     12si6460233yxe.100 (in reply to RCPT TO command) Só para confirmar, o e-mail é fgmans@gmail.com ?  
Responder

Gostei + 0

10/05/2010

Fabio Mans

Desculpa, fgamans@gmail.com

Obrigado.
Responder

Gostei + 0

10/05/2010

Carlos Nogueira

Fabio,   Foi encaminhado para o seu e-mail o banco de dados conforme sua solicitação. O mesmo está em SQL Server 2005.
Responder

Gostei + 0

10/05/2010

Fabio Mans

No banco tem dois usuários, maria e ricardo

SELECT TOP 1000 [ApplicationId]
      ,[UserId]
      ,[UserName]
      ,[LoweredUserName]
      ,[MobileAlias]
      ,[IsAnonymous]
      ,[LastActivityDate]
  FROM [UBIKStart].[dbo].[aspnet_Users]


Responder

Gostei + 0

11/05/2010

Carlos Nogueira

Isso mesmo, se você efetuar um SELECT na tabela aspnet_roles, verá que não tem nenhum perfil cadastrado, porém, se você acessar a ferramenta WST para este banco, verá que existem dois perfis (roles) cadastrados no banco.
Responder

Gostei + 0

11/05/2010

Fabio Mans

Muito estranho, realmente não tem roles, recrie a tabela.


Responder

Gostei + 0

11/05/2010

Carlos Nogueira

Oi Fabio,   Eu fiz o que você informou no último post mas não deu certo. Continua o mesmo problema, mas ai decidi realizar mais uma vez a operação conforme os passos abaixo:   - Abri meu projeto do tipo "Web Application" e removi meu arquivo web.config; - Abri a ferramenta aspnet_regsql; - Removi as tabelas do provider do banco que havia criado; - Exclui o banco de dados que havia criado; - Criei um banco de dados com outro nome; - Abri a ferramenta aspnet_regsql; - Adicionei as tabelas do provider para o banco recem criado; - Abri meu projeto do tipo "Web Application"; - Adicionei um arquivo web.config nele; - Adicionei uma connectionString para o novo banco de dados; - Acrescentei o elemento membership dentro do elemento "system.web" como você pode ver abaixo:     <membership defaultProvider="AspNetSqlProvider">
   <providers>
    <add name="AspNetSqlProvider"
             type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="ConexaoSQL"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             passwordFormat="Hashed"
             applicationName="/"/>
   </providers>
  </membership>   - Abri a ferramenta WST; - Fui na aba Security; - Selecionei a opção de autenticação "From the internet"; - Selecionei a opção "Enable roles".   Após ter selecionado para habilitar as roles, foi demonstrado a mesma quantidade de roles que havia cadastrado anteriormente, no outro banco que havia excluido no passo acima. Foi então que recordei que você perguntou se eu estava usando SQL ou App_Data (tanto que te mandei o banco do SQL). Bem, ai eu vi na estrutura do meu projeto "Web Application" uma pasta App_Data (pelo Solution Explorer) e como estava vazia, por via das dúvidas, eu exclui a mesma do projeto.   Então, abri novamente a ferramenta WST mas a quantidade se encontrava como antes. Desta forma, fui pelo Windows Explorer e ainda vi na estrutura do projeto a pasta App_Data, e dentro dela estava um banco SQL chamado ASPNETDB (deve ser o banco que ele usa para o providers quando não aponta banco existente, se eu não estiver enganado). Sendo assim, decidi apagar o arquivo fisico do banco bem como a pasta App_Data. Ao voltar para o Visual Studio e chamar a ferramenta WST, fui na aba Security e a quantidade de roles havia zerado, mas ao mesmo tempo notei que a ferramenta WST criou novamente a pasta App_Data com o banco ASPNETDB quando acessei a aba Security (percebi a criação da pasta pelo Windows Explorer). Então, quando faço cadastro de um perfil (role) com uma página que tenho de teste no projeto, por alguma razão ele esta desconsiderando a connectionString que informei no elemento membership e está levando em consideração a pasta App_Data (eu acho).   No projeto, tenho uma página de teste, que tem referência para um projeto Class Library. Neste projeto Class Library, tem uma classe chamada Perfil (eu adicionei nesse projeto a referência System.Web para ter acesso as classes Membership, Roles, e etc) que utiliza a classe Roles para adicionar o perfil informado pelo usuário na página fazendo uso do método CreateRole.   Você acredita que pode ser o tipo de projeto Web que estou usando que está gerando este problema ou, a referência que fiz na minha Class Library para System.Web não entendeu o que foi informado no meu projeto Web Application pelo web.config e por isso, está usando o banco padrão do providers? Ou, tem alguma outra idéia?   Fico no aguardo, obrigado pela atenção!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar