Staticizzare gli URL con un HttpHandler

di Daniele Bochicchio, in ASP.NET, HttpHandler, VB.NET,

Gli HttpHandler sono una delle novità più interessanti dell'architettura di ASP.NET, perchè rendono possibile la realizzazione di funzionalità che con Classic ASP necessitavano di filtri ISAPI.
Lo script di oggi è un handler che permette di rendere statici URL che in realtà passano il proprio ID ad una pagina che preleva le informazioni da un database.
L'uso di questo sistema renderà possibile avere URL come
http://sito/articoli/articolo15.ashx
anzichè
http://sito/articoli.aspx?ID=15
che è più gradito ai motori di ricerca e più semplice da gestire.

Imports System
Imports System.Web

Namespace ASPItalia
  Public Class RedirHandler
    Implements IHttpHandler 

    Dim private pagina as String

    Public Sub ProcessRequest(ByVal Context As HttpContext) Implements System.Web.IHttpHandler.ProcessRequest 
      ' ricava path corrente
      Dim requestPath As String = Context.Request.Path.ToLower()

      ' se non è un articolo, ignoriamolo
      if requestPath.IndexOf("articoli") < 0 then Exit Sub

      If requestPath.EndsWith(".ashx") AndAlso requestPath.IndexOf("articolo") > 0 then
        Dim pagina as String = requestPath
        pagina = pagina.Substring(pagina.IndexOf("articolo")+8).Replace(".ashx", String.Empty)
        Context.Server.Execute("../content.aspx?ID=" & pagina)
      End If
   End Sub

   Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable 
     Get 
       Return True 
     End Get 
   End Property 

  End Class
End Namespace

Oltre a compilare la classe (disponibile nell'allegato con il make.bat) è necessario creare un web.config che associ l'estensione .ashx al nostro HttpHandler. Niente paura perchè si tratta di un'estensione che ASP.NET non usa direttamente, ma mette a disposizione degli sviluppatori proprio per funzionalità come queste.
Nessuno vi vieta di aggiungere estensioni particolari, come .content, purchè vi ricordiate di mapparle al filtro ISAPI di ASP.NET all'interno di IIS.

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.

Approfondimenti

I più letti di oggi