2010-06-16 8 views
23

Tengo un HttpHandler que redimensiona las imágenes sobre la base de la cadena de consulta, por lo que solicita algo como:¿Cómo registro varias rutas para HttpHandler en IIS7?

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

le dará una imagen redimensionada que es 320x240.

En el IIS Manager, bajo Handler Mappings, que mapea el camino de mi manejador como *.jpg,*.gif,*.bmp,*.png. Sin embargo, esto no activa el controlador. Si lo cambio a solo *.jpg, entonces funciona.

Mi pregunta es, ¿tengo que crear 4 entradas de mapeo separadas, una para cada tipo de imagen, o hay alguna forma de combinar múltiples extensiones en una ruta?

Respuesta

6

Puede agregar múltiplos del mismo controlador siempre que cambie el atributo del nombre.

12

respuesta de Daniel T:

Resulta que asignación de controlador de IIS 7 es diferente de la asignación de controlador de IIS 6. En IIS 6, puede asignar sus controladores de este tipo en web.config:

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

Se permite el uso de varias rutas, delimitado por comas. En IIS 7, que está en una sección diferente:

<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> 

No es compatible con múltiples caminos, por lo que necesita para trazar el controlador para cada ruta.

Es probable que tenga que llegar a la cartografía que en ambos lugares porque el servidor dev interna de Visual Studio utiliza IIS 6 (o IIS 7 se ejecuta en modo de compatibilidad), mientras que el servidor de producción probablemente está usando IIS 7.

+1

Este fue la respuesta para mí, actualicé desde 3.5 y MVC 2 a 4.5.2 y MVC 3. Sabía que mover los a la sección , pero hasta ahora no me di cuenta de que el uso de 'ruta' tenía para ser alterado, gracias! – WillDud

Cuestiones relacionadas