2010-06-16 4 views
23

J'ai un HttpHandler qui redimensionne les images basées sur la querystring, demandant si quelque chose comme:Comment enregistrer plusieurs chemins pour un HttpHandler dans IIS7?

http://server/image.jpg?width=320&height=240

vous donnera une image redimensionnée qui est 320x240. Dans le IIS Manager, sous Handler Mappings, j'ai tracé le chemin de mon gestionnaire sous la forme . Cependant, cela n'active pas le gestionnaire. Si je le change en seulement *.jpg, alors ça marche.

Ma question est, est-ce que je dois créer 4 entrées de mappage séparées, une pour chaque type d'image, ou est-il possible de combiner plusieurs extensions dans un chemin?

Répondre

6

Vous pouvez ajouter des multiples du même gestionnaire tant que vous modifiez l'attribut de nom.

12

réponse de Daniel T:

avère que le mappage de gestionnaire de IIS 7 est différent de celui de mappage de gestionnaire de IIS 6. Dans IIS 6, vous pouvez mapper vos gestionnaires comme celui-ci dans web.config:

<configuration> 
    <system.web> 
    <httpHandlers> 
     <add verb="GET" path="*.jpg,*.gif,*.bmp,*.png" type="YourProject.ImageHandler" /> 
    </httpHandlers> 
    </system.web> 
</configuration> 

Il vous permet d'utiliser plusieurs chemins, délimités par des virgules. Dans IIS 7, il est dans une autre section:

<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="ImageHandler for JPG" path="*.jpg" verb="GET" type="YourProject.ImageHandler" resourceType="File" /> 
     <add name="ImageHandler for GIF" path="*.gif" verb="GET" type="YourProject.ImageHandler" resourceType="File" /> 
     <add name="ImageHandler for BMP" path="*.bmp" verb="GET" type="YourProject.ImageHandler" resourceType="File" /> 
     <add name="ImageHandler for PNG" path="*.png" verb="GET" type="YourProject.ImageHandler" resourceType="File" /> 
    </handlers> 
    </system.webServer> 
</configuration> 

Il ne supporte pas plusieurs chemins, vous devez mapper votre gestionnaire pour chaque chemin.

Vous devrez probablement finir par la cartographie dans les deux endroits parce que serveur dev interne Visual Studio utilise IIS 6 (ou IIS 7 en cours d'exécution en mode de compatibilité), alors que le serveur de production utilise probablement IIS 7.

+1

Cette était la réponse pour moi, j'ai mis à jour de 3.5 & MVC 2 à 4.5.2 et MVC 3. Je savais déplacer le à la section , mais jusqu'à présent, je ne savais pas que l'utilisation de «chemin» avait être modifié, merci! – WillDud

Questions connexes