Comment puis-je formater «en douceur» l'URI HttpHandler?
-
02-07-2019 - |
Question
Je me mêle de la façon dont le service Web RESTful en C # utilise ASP.Net 2.0 et ai géré (via une bibliothèque de classes, une référence à une dll produite par l'ancien et un ajustement de mon web.config) à extraire un format d'URI comme ceci:
http: // localhost / DevelopmentProject / testhandler /? input = thisismyinput
Ce qui, de manière anodine, renvoie simplement l'entrée sous forme de texte avec le préfixe éclairant "Votre entrée était:"
J'avais l'impression que je pouvais obtenir que l'URI devienne encore plus simple:
http: // localhost / DevelopmentProject / testhandler / thisismyinput
et vous obtenez le même résultat, mais vous ne savez pas comment vous en débarrasser "? input ="
L'entrée dans la section httphandlers de mon Web.config est (espaces ajoutés afin que le code s'affiche):
< ajouter un verbe = " * " path = " testhandler / * " type = " HandlerLib.testhandler, HandlerLib " / >
J'utilise IIS 5.1 sur la machine locale. Est-ce que cela va poser un problème?
Essentiellement, où est-ce que je me trompe?
Merci.
La solution 3
Autres conseils
Une solution consiste à utiliser UrlRewriting pour réécrire l’URL selon vos besoins.
J'utilise http://urlrewriter.net/ pour faire toute ma réécriture, et vous pouvez configurer quelque chose comme: ceci dans votre scénario
<rewriter>
<rewrite
url="DevelopmentProject/testhandler/([\w]+)"
to="DevelopmentProject/testhandler/?input=$1" />
</rewriter>
Cela resterait " http: // localhost / DevelopmentProject / testhandler / thisismyinput " Dans la barre d’adresse de votre navigateur, procédez de la manière suivante: "http: // localhost / DevelopmentProject / testhandler /? input = thisismyinput"
.Vous pouvez implémenter la réécriture d'URL, à l'aide de quelque chose comme URLRewriter.net . Cela vous permettrait d'utiliser la syntaxe que vous avez mentionnée.
Modifiez votre configuration à partir de: < ajouter un verbe = " " chemin = " testhandler / " type = " HandlerLib.testhandler, HandlerLib " / > à: < ajouter un verbe = " " path = " testhandler / * " type = " HandlerLib.testhandler, HandlerLib " / >
Vérifiez la valeur de Request.PathInfo dans la fonction ProcessRequest de votre gestionnaire. avec une URL du type http: // localhost / DevelopmentProject / testhandler / thisismyinput .
Si cela ne fonctionne pas, assurez-vous qu'IIS 5.1 achemine TOUTES les demandes vers aspnet_isapi.dll. (Bien que cela semble déjà être le cas) C’est la "Configuration ..." bouton > "Mappages d'applications" onglet dans votre répertoire virtuel dans IIS.