2009-06-05 18 views
6

Ho creato un progetto di esempio per semplificare il mio problema. Ho questo semplice gestore:HTTP Handler funziona con Cassini, ma non con IIS 6

public class HandleThis : IHttpHandler, IRequiresSessionState 
{ 

    public void ProcessRequest(System.Web.HttpContext context) 
    { 
     // Score.aspx just says "success" 
     context.Response.Redirect("Score.aspx"); 
    } 

    public bool IsReusable { get { return true; } } 
} 

Poi, nel mio config, ho questo:

<httpHandlers> 
<add verb="*" 
path="Survey" 
type="HttpHandlerTest.HandleThis, HttpHandlerTest" /> 

Ora, quando ho colpito http://server/Survey miei fuochi del gestore.

Se cambio il mio progetto per l'esecuzione con IIS 6, non verrà attivato (404). Ho provato manualmente aggiungendo il gestore in IIS via: - Proprietà sito Web - Home Directory - Configurazione - Aggiungi (passare alla DLL del mio sito), Estensione: Survey, deselezionare "Verifica esistenza del file"

Ho notato che IIS (così utile) aggiunge il "." di fronte alla mia estensione, quindi ho colpito il sito con "b.Survey"; ancora 404.

Sicuramente è possibile aggiungere un gestore in IIS 6?

risposta

6

"Ho provato ad aggiungere manualmente il gestore in IIS tramite: - proprietà del sito Web - Home Directory - Configurazione - Aggiungi (passare alla DLL del mio sito), Estensione: Survey, deselezionare Verifica esistenza del file"

Sembra che tu stia utilizzando il percorso "eseguibile" sbagliato. Il percorso dell'eseguibile deve puntare a aspnet isapi dll, non alla dll che contiene l'implementazione HttpHandler.

Provare a utilizzare lo stesso percorso a cui è associata l'estensione .aspx (spesso questo è: c: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll).

+0

Quando lo faccio ottengo una risposta completamente vuota. – dudeNumber4

+0

Suppongo che in realtà non venga reindirizzato a Score.aspx? Stai navigando verso http: // server/sondaggio/URL con un mapping jolly (*) in IIS? – etorrejon

+0

Ho appena realizzato il mio problema; dopo aver modificato il percorso dell'eseguibile in modo che puntasse su aspnet, ho quindi dovuto correggere ciò che avevo nella mia configurazione (avevo cambiato l'estensione in ".wtf" in IIS, quindi ho dovuto cambiare la configurazione in path = "*. wtf " – dudeNumber4

3

In Cassini tutto passa attraverso il server dev, anche se la programmazione nel server genera un'eccezione se si tenta di utilizzarla in modalità integrata.

In IIS7 funzionerebbe, se si sta eseguendo l'applicazione in modalità integrata.

In IIS6 è necessario assegnare path = "*" a ASPNET_ISAPI.dll e quindi avere lo stesso codice indicato sopra nel proprio web.config oppure è necessario assegnare l'estensione nel percorso per il gestore.

Se si riscontrano problemi nell'aggiunta di aspnet isapi come * in IIS6, google per "IIS6 senza estensione" o qualcosa di simile per le esercitazioni passo-passo.

+0

Penso di averlo fatto sembrare che volevo un gestore per un URL senza estensione; Io non. Voglio solo che il mio gestore faccia fuoco. Se scrivo "wtf" come estensione nella finestra di dialogo estensioni mappings/Application di IIS, e provo a premere "a.wtf", non verrà attivato. – dudeNumber4

+0

Sì, beh, quello a cui stavo alludendo era che web.config e asp.net isapi dovevano corrispondere e la tua attuale soluzione non lo faceva. Ad ogni modo, sembra che l'altra persona lo abbia definito meglio per te. –

Problemi correlati