Come posso & # 8220; senza problemi & # 8221; formato HttpHandler URI?
-
02-07-2019 - |
Domanda
Sto solo immischiando nei modi del servizio web RESTful in C # usando ASP.Net 2.0 e sono riuscito (tramite una libreria di classi, un riferimento alla DLL prodotta dal primo e qualche aggiustamento del mio web.config) a persuadere un formato URI in questo modo:
http: // localhost / DevelopmentProject / testhandler /? input = thisismyinput
Il che inequivocabilmente restituisce l'input come un pezzo di testo con il prefisso illuminante "Il tuo input era: "
Avevo l'impressione di riuscire a rendere l'URI ulteriormente attenuato a qualcosa di più sulla falsariga di:
http: // localhost / DevelopmentProject / testhandler / thisismyinput
e hanno lo stesso risultato ma non ho idea di come sbarazzarsi del fastidioso "? input = "
La voce nella sezione httphandlers del mio web.config è (spazi aggiunti in modo da visualizzare il codice):
< aggiungi verbo = " * " path = " testhandler / * " type = " HandlerLib.testhandler, HandlerLib " / >
Sto eseguendo IIS 5.1 sul computer locale, questo introdurrà un problema?
Essenzialmente dove sbaglio?
Grazie.
Soluzione 3
Altri suggerimenti
Una soluzione è utilizzare UrlRewriting per riscrivere l'Url in base alle proprie esigenze.
Uso http://urlrewriter.net/ per eseguire tutta la mia riscrittura e potresti impostare qualcosa di simile questo nel tuo scenario
<rewriter>
<rewrite
url="DevelopmentProject/testhandler/([\w]+)"
to="DevelopmentProject/testhandler/?input=$1" />
</rewriter>
Questo rimarrebbe " http: // localhost / DevelopmentProject / testhandler / thisismyinput " nella barra degli indirizzi del browser, ma elabora come " http: // localhost / DevelopmentProject / testhandler /? input = thisismyinput "
Potresti implementare la riscrittura degli URL, usando qualcosa come URLRewriter.net Ciò ti consentirebbe di utilizzare la sintassi che hai citato.
Cambia la tua configurazione da: & Lt; aggiungi verbo = " " path = " testhandler / " type = " HandlerLib.testhandler, HandlerLib " / > a: & Lt; aggiungi verbo = " " path = " testhandler / * " type = " HandlerLib.testhandler, HandlerLib " / >
Controlla il valore di Request.PathInfo nella funzione ProcessRequest del gestore con un URL come http: // localhost / DevelopmentProject / testhandler / thisismyinput .
In caso contrario, assicurarsi che IIS 5.1 instradi TUTTE le richieste a aspnet_isapi.dll. (Anche se sembra che lo sia già) Questa è la " Configurazione ... " pulsante > " Mapping app " scheda nella directory virtuale in IIS.