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.

Foi útil?

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 antes do primeiro provedor de associação (o elemento) na lista.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top