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

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

ASP.NET 3.5 Application Services (Membership, Roles, Profile API) sotto Classic ASP con IIS 7.0
| 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