#537 - Staticizzare gli URL con un HttpHandler

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.

Nota: Questo script contiene un allegato.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

apprendista scrive:
#537 - Staticizzare gli URL con un HttpHandler

Trovo l'articolo decisamente interessante, però, ho dei problemi con il file web.config, vorrei fossero specificati meglio i passaggi da effetuare su ...
domenica 16 novembre 2003 | 4 risposte

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC