2 votes

REST avec .NET en utilisant un gestionnaire par défaut

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.

1voto

csharptest.net Points 16556

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X