La procedura oggetto di questo articolo consente di servirsi di Visual C# .NET per creare un semplice gestore HTTP personalizzato. In questo articolo viene spiegato come creare, installare e configurare il gestore.
Implementare il gestore
-
Aprire Microsoft Visual Studio .NET. In Visual C# .NET creare un nuovo progetto libreria di classi denominandolo MyHandler.
-
Impostare un riferimento all'assembly
System.Web.dll.
-
Aggiungere la seguente istruzione alla classe:
-
Rinominare la classe SyncHandler.cs e modificarne la definizione di conseguenza.
-
Implementare l'interfaccia
IHttpHandler. La definizione della classe si presenterà come segue:
public class SyncHandler : IHttpHandler
-
Implementare la proprietà
IsReusable
e il metodo
ProcessRequest
dell'interfaccia
IHttpHandler. Poiché questo gestore è sincrono, restituire
False
per la proprietà
IsReusable
in modo che il gestore non divenga oggetto di pooling.
public bool IsReusable
{
get {return false;}
}
public void ProcessRequest(HttpContext context)
{
context.Response.Write("Hello from custom handler.");
} -
Compilare il progetto.
Installare il gestore
-
Creare una nuova directory dal nome Handler nella directory C:\Inetpub\Wwwroot.
-
Creare una sottodirectory Bin nella directory Handler appena creata. Il percorso risultante è C:\Inetpub\Wwwroot\Handler\Bin.
-
Copiare MyHandler.dll dalla directory del progetto Bin\Debug alla directory C:\Inetpub\Wwwroot\Handler\Bin.
-
Attenersi alla procedura seguente per contrassegnare la nuova directory Handler come applicazione Web:
-
Aprire Gestione servizi Internet.
-
Fare clic con il pulsante destro del mouse sulla directory Handler e scegliere
Proprietà.
-
Nella scheda
Directory
scegliere
Crea.
-
Attenersi alla procedura seguente per creare un mapping di applicazioni per il gestore. Creare un mapping al file Aspnet_isapi.dll relativamente all'estensione *.sync. A ogni richiesta di un file sync, la richiesta verrà inoltrata ad ASP.NET e verrà eseguito il codice del gestore.
-
Fare clic con il pulsante destro del mouse sull'applicazione Web Handler e scegliere
Proprietà.
-
Nella scheda
Directory
scegliere
Configurazione.
-
Scegliere
Aggiungi
per aggiungere un nuovo mapping.
-
Nella casella
Eseguibile
digitare il seguente percorso:
C:\WINNT\Microsoft.NET\Framework\<n. versione>\Aspnet_isapi.dll
-
Nella casella
Estensione
digitare
.sync.
-
Accertarsi che la casella
Verifica l'esistenza dei file
sia deselezionata, quindi scegliere
OK
per chiudere la finestra di dialogo
Aggiungi/modifica mapping estensioni applicazioni.
-
Scegliere
OK
per chiudere le finestre di dialogo
Configurazione applicazioni
e
Proprietà gestore.
-
Chiudere Gestione servizi Internet.
Configurare il sistema
-
Nella directory C:\Inetpub\Wwwroot\Handler creare un nuovo file denominato Web.config.
-
Aggiungere il seguente codice a Web.config:
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.sync" type="MyHandler.SyncHandler, MyHandler" />
</httpHandlers>
</system.web>
</configuration>
Nell'attributo
verb="*"
si fornisce al gestore l'istruzione di elaborare una richiesta che utilizza qualsiasi verbo, ad esempio POST, HEAD, GET e così via. Per fare in modo che il gestore elabori solo le richieste POST, impostare l'attributo nel modo seguente
verb="POST".
Nell'attributo
path="*.sync"
si fornisce al gestore l'istruzione di elaborare qualsiasi richiesta in arrivo per i file con estensione sync.
Nell'attributo
type="MyHandler.SyncHander, MyHandler"
si fornisce al gestore che elabora le richieste l'istruzione di eseguire l'implementazione nello spazio dei nomi
MyHandler.SyncHandler
e che questa classe risiede nell'assembly
MyHandler.
Verificare il modulo
Per verificare il modulo non è necessario che una pagina esista nel file system. Richiedere ad esempio il file Default.sync dell'applicazione Web Handler (http://<
NomeComputer>/Handler/Default.sync). Si otterranno i seguenti risultati:
Hello from custom handler.
RIFERIMENTI
Per ulteriori informazioni sui gestori HTTP, fare clic sul numero dell'articolo della Knowledge Base riportato di seguito (gli articoli con prefisso "Q" contengono informazioni in inglese):
307985
(http://support.microsoft.com/kb/307985/
)
BETA-INFO: ASP .NET HTTP Modules and HTTP Handlers Overview
Identificativo articolo: 308001 - Ultima modifica: martedì 8 aprile 2003 - Revisione: 2.0
Le informazioni in questo articolo si applicano a
- Microsoft ASP .NET Beta 2
- Microsoft Visual C# .NET 2002 Standard Edition
| kbhowto kbhowtomaster kbhttpruntime kbgrpdsasp KB308001 |
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.