Je suis en train de créer un service REST à l'aide de .NET et j'ai utilisé un gestionnaire générique, Default.ashx, pour traiter les demandes entrantes. Cela me permet d'accéder au service en utilisant des méthodes comme "http://rest/test" sans problème. Mais lorsqu'une extension de fichier est ajoutée, IIS ne redirige plus la demande mais recherche un fichier. Comment modifier le web.config pour que les requêtes URL telles que "http://foo/test.xml" et "http://foo/test.json" soient également traitées par le DefaultHandler.ashx ? J'ai déjà fait cela auparavant et je sais que c'est possible, mais je ne me souviens pas de la configuration.
Réponse
Trop de publicités?Vous pouvez voir un exemple de ceci dans l'image de mon application HttpClone. web.config . L'essentiel consiste à supprimer les gestionnaires des extensions que vous ne voulez pas comme ceci :
<system.webServer>
...
<handlers accessPolicy="Read, Script">
<clear />
<add name="Favorite-Icon" path="/favicon.ico" verb="GET,HEAD" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
<add name="HttpClone" path="*" verb="GET,HEAD,POST,DEBUG" type="Namespace.MyCustomHandler, AssemblyName" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
</handlers>
Il s'agit d'utiliser un gestionnaire personnalisé pour toutes les requêtes pour tous les URI sauf '/favicon.ico'. Si vous avez toujours besoin d'utiliser 'Default.ashx', vous devrez obtenir un gestionnaire pour le type ashx et le mapper pour traiter tous les chemins comme ceci. En général, il n'est pas nécessaire d'utiliser le gestionnaire de l'extension ashx. IHttpHandler dans n'importe quel assemblage et le référencer dans l'attribut "type" ci-dessus.
Notez que le serveur web cassini (le serveur de test dans VStudio) ne mettra pas en correspondance le répertoire par défaut '/' avec votre gestionnaire. Pour résoudre ce problème pour Cassini, il faut qu'un document default.aspx existe (bien qu'il puisse être vide).
Note 2 - La configuration ci-dessus est uniquement pour le mode intégré, pour le mode classique le concept est le même mais les réglages sont à un endroit différent.