Como implantar um MembershipProvider personalizado ASP.net?
-
05-07-2019 - |
Pergunta
Eu escrevi um MembershipProvider personalizado que usa um esquema de banco de dados personalizado para armazenar os membros, mas estou tendo problemas para descobrir como implementar o provedor. Meu servidor de destino estiver executando o IIS7, e eu sou capaz de navegar para um diálogo para a adição de um Provedor de Usuário NET, mas em vez de me permitir selecionar o assembly que contém o provedor e, em seguida, a classe, ele fornece um drop-down com um par de prestadores de MS escritas.
Preciso largar a minha montagem em um local específico para que a minha classe MembershipProvider é descoberto por IIS? Se assim for, o que de onde vem a necessidade .dll ir? Caso contrário, como é que dizer ASP.Net para usar o meu MembershipProvider? Cada exemplo que eu vi simplesmente referencia o nome de classe totalmente qualificado, mas não faz nenhuma menção de como as necessidades de arquivo para ser implantado.
Solução
Se você olhar no arquivo web.config para o aplicativo, você deve ter uma seção chamada system.web. Dentro de que há um elemento de associação com uma lista de fornecedores. Você deve ser capaz de adicionar o seu provedor e definir um provedor padrão lá. Uma vez que seu provedor de associação está registrado dessa maneira, você deve ser capaz de selecioná-lo como um padrão para que a aplicação do IIS também.
<system.web>
...
<membership defaultProvider="MyMembershipProvider"
userIsOnlineTimeWindow="15">
<providers>
<add name="MyMembershipProvider"
type="Common.Auth.MyMembershipProvider, Common"
connectionStringName="MyAuthDBConnectionString"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
writeExceptionsToEventLog="false" />
</providers>
</membership>
...
</system.web>
O elemento provedores permite registrar múltiplos fornecedores para escolher. Outra característica é que você pode limpar provedores de associação registrados em outros arquivos de configuração da máquina. Isso pode fazer configurar seu aplicativo menos propenso a erros mais tarde. Para fazer isso, adicionar o elemento
<system.web>
...
<membership defaultProvider="MembershipProvider1">
<providers>
<clear />
<add name="MembershipProvider1" ... />
<add name="MembershipProvider2" ... />
</providers>
</membership>
...
</system.web>
Se você quiser registrar o mesmo fornecedor com múltiplas aplicações web apenas usando o Gerenciador de IIS, você terá que colocar o assembly no GAC e adicionar o provedor para um dos arquivos de configuração de máquina em vez. Isso geralmente é mais trabalho para pouco benefício ao implantar uma única aplicação.