Domanda

Ho scritto un MembershipProvider personalizzato che utilizza uno schema di database personalizzato per l'archiviazione dei membri, ma non riesco a capire come distribuire il provider. Il mio server di destinazione esegue IIS7 e sono in grado di accedere a una finestra di dialogo per l'aggiunta di un provider di utenti .NET, ma invece di consentirmi di selezionare l'assembly contenente l'amplificatore &; quindi la classe, fornisce un menu a discesa con un paio di provider scritti MS.

Devo rilasciare il mio assembly in una posizione specifica in modo che la mia classe MembershipProvider venga rilevata da IIS? In tal caso, dove deve andare il DLL? Altrimenti, in che modo dire ad ASP.Net di utilizzare il mio MembershipProvider? Ogni esempio che ho visto fa semplicemente riferimento al nome completo della classe, ma non menziona il modo in cui il file deve essere distribuito.

È stato utile?

Soluzione

Se cerchi la tua applicazione nel file web.config, dovresti avere una sezione chiamata system.web. All'interno di questo c'è un elemento di appartenenza con un elenco di fornitori. Dovresti essere in grado di aggiungere il tuo provider e impostare un provider predefinito lì. Una volta che il tuo provider di appartenenza è registrato in questo modo, dovresti essere in grado di selezionarlo come predefinito per quella applicazione anche da IIS.

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

L'elemento provider consente di registrare più provider tra cui scegliere. Un'altra caratteristica è che è possibile cancellare i provider di appartenenze registrati in altri file di configurazione sulla macchina. Ciò può rendere la configurazione dell'applicazione meno soggetta a errori in seguito. Per fare ciò, aggiungi & Lt; clear / & Gt; elemento prima del primo provider di appartenenze (l'elemento < add / >) nell'elenco.

<system.web>
    ...
    <membership defaultProvider="MembershipProvider1">
        <providers>
            <clear />
            <add name="MembershipProvider1" ... />
            <add name="MembershipProvider2" ... />
        </providers>
    </membership>
    ...
</system.web>

Se si desidera registrare lo stesso provider con più applicazioni Web usando semplicemente IIS Manager, sarà necessario inserire l'assembly nel GAC e aggiungere invece il provider a uno dei file di configurazione della macchina. Di solito si tratta di un lavoro maggiore a scapito dei vantaggi quando si distribuisce una singola applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top