ASP.NET 3.5 Application Services (Membership, Roles, Profile API) sotto Classic ASP con IIS 7.0

di Daniele Bochicchio, in ASP.NET,

Ci sono alcune cose che, per quanto ASP.NET 2.0 con il suo DefaultHttpHandler ed IIS 6.0 possano tentare di garantire, solo l'accoppiata ASP.NET 3.5+IIS 7.0 riescono a portare egregiamente a termine. Fermo restando che ASP.NET 3.5 è prettamente un nome "marketing" dato ad ASP.NET 2.0+SP1+alcune funzionalità che in realtà sono marginali rispetto a quello che mi pongo di fare in questo caso.

Siccome ormai ho capito che nella vita le cose più assurde toccano a me :), in questi giorni ho finito un progettino che avevo cominciato, se non ricordo male, ai primi Community Days e poi avevo abbandonato per manca di tempo, aiutato dal fatto che la voce l'ho lasciata a qualche centinaio di km da casa e quindi posso stare più a scrivere e meno al telefono rispetto al solito.

Ad ogni modo, fermo restando che alcune cose sono possibili anche usando IIS 6.0+ASP.NET 2.0 e che io non le userei mai in produzione per il semplice fatto che l'integrated pipeline di IIS 7.0 ha performance che non sono nemmeno lontanamente paragonabili a quelle della pipeline classica, che ripete sia per la parte managed che per quella unmanaged le stesse identiche operazioni, il risultato è molto interessante.

Quello che IIS 7.0 consente è molto più bello, performante ed integrato. E se lo provate sotto IIS 6.0, semplicemente riceverete una bella PlatformNotSupportedException, nel caso specifico.

Siccome il team ha "sganciato" quelli che sono chiamati gli Application Services, cioè Membership, Roles e Profile API, per renderli disponibili via AJAX, WCF o anche WinForms, WPF o quello che vi pare, per integrare queste informazioni in ambiti diversi, sulla scia di un paio di progetti per altrettanti clienti, ho provato a fare lo stesso per la parte "legacy" di un'applicazione, coadiuvato dal fatto che ora c'è la possibiltà di scrivere nelle Header della richiesta e quindi recuperarle da, ad esempio, Classic ASP o PHP, JSP, Python, CGI e chissà cos'altro.

Per cui ho fatto una bella solution con la mia FormsAuthentication, Membership, Roles e Profile API attivate, ho creato un semplice HttpModule che nell'evento BeginRequest dell'applicazione scrive nele header quello che mi serve prima che arrivi al vero Handler la palla. Ed il risultato è questo:

image

Le righe di codice che con Classic ASP recuperano il tutto sono le seguenti:

 Username: <%=Request.ServerVariables("AUTH_USER") %><br /> 
Roles from ASP.NET Role API: <% 
Dim roles 
roles = Request.ServerVariables("HTTP_Roles") 
Response.Write(roles) 
%>
 

Appena finisco di sistemare un po' di dettagli riguardo Profile API, che è un po' più lungo da sistemare, l'aggiungerò nel lab.

Poi non venite a dirmi che IIS 7.0 in realtà non è 300 mila passi in avanti rispetto alla 6.0 ;)

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese