3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
In questo esempio sono stati inclusi solo i due metodi ValidateUser e CreateUser. Come si può notare, il secondo metodo presenta qualcosa di "strano": dopo la creazione dell'utente la funzione dovrebbe tornare un'istanza della classe MembershipUser. Se avessimo provato a passare come valore di ritorno una istanza di questa classe avremmo ottenuto l'errore seguente:

Con un reflector andiamo a leggere il codice di questa classe all'interno del Framework. Il mistero viene subito svelato...
[Serializable, AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class MembershipUser
{
...
}
I programmatori Microsoft hanno protetto la serializzazione di questa classe impostando al minimo i livelli dei permessi. Per ovviare al problema possiamo creare una classe serializzabile simile a MembershipUser oppure, come nel caso di questo esempio, possiamo semplicemente ricreare la classe all'interno del provider che richiama il web service.
Ora dobbiamo configurare l'applicazione sul secondo server. Tutto rimane uguale, tranne il provider per la gestione della Membership. In entrambe le web application abbiamo lo stesso web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|aspnetdb.mdf" />
</connectionStrings>
<system.web>
<authentication mode="Forms" />
<membership defaultProvider="SqlProvider">
<providers>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
/>
<add name="AzMembership"
url="http://localhost/mem1/validateuser.asmx"
type="System.Web.Security.AzMembershipProvider"/>
</providers>
</membership>
</system.web>
<appSettings>
<add key="localhost.validateuser" value="http://localhost/mem1/validateuser.asmx"/>
</appSettings>
</configuration>
Nella sezione providers sono definiti due provider: SqlProvider e AzMembership. Il primo provider come fonte dei dati utilizza SQL Server Express Edition e viene impiegato nell'applicazione sul primo server. Il provider AzMembership accede ai dati dell'utenza grazie al web service visto in precedenza e viene impiegato nell'applicazione sul secondo server.
Nel nostro caso, per dichiarare quale di questi provider viene utilizzato, è sufficiente specificarne il nome nell'attributo defaultProvider nella sezione membership. Sul primo server specifichiamo "SqlProvider", sul secondo "AzMembership".
Per inserire nella lista altri provider personalizzati è necessario utilizzare il nodo <add /> all'interno della sezione providers nel modo seguente:
<add name="nome_provider" type="nome_classe[, nome_dll]" />
In aggiunta possiamo inserire tutti i parametri di nostra scelta per una configurazione adatta allo scopo. Nel nostro caso specifichiamo il parametro url per indicare il percorso del web service da richiamare (una necessità più didattica che di reale necessità, visto che il percorso del web service è inserito anche all'interno della sezione appSettings).
3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Galleria fotografica dinamica con ASP.NET AJAX
- Usare Search come un servizio nei tuoi siti e nei tuoi client
- Mappe nel tuo sito con Virtual Earth
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
- Introduzione ai cloud based service con Windows Live Services
- Realizzare un custom extender AJAX con ASP.NET 3.5
- Tracciare le modifiche ai dati e allineare i datawarehouse con il Change Data Capture in SQL Server 2008
- Le nuove caratteristiche di IIS 7.0 per sviluppatori e sistemisti
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Difficoltà
Utilità
Stampa
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
