2010-06-16 9 views
23

Ho un HttpHandler che ridimensiona le immagini in base alla querystring, in modo che richiede qualcosa di simile:Come faccio a registrare più percorsi per un HttpHandler in IIS7?

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

vi darà un'immagine ridimensionata che è 320x240.

Nel IIS Manager, in Handler Mappings, ho mappato il percorso del gestore come *.jpg,*.gif,*.bmp,*.png. Tuttavia, questo non attiva il gestore. Se lo cambio a solo *.jpg, allora funziona.

La mia domanda è, devo creare 4 voci di mapping separati, uno per ogni tipo di immagine, o c'è qualche modo per combinare più estensioni in un percorso?

risposta

6

È possibile aggiungere i multipli dello stesso gestore fino a quando si modifica l'attributo nome.

12

risposta di Daniel T:

Risulta che mapping del gestore di IIS 7 è diverso da quello di mapping del gestore IIS 6 di. In IIS 6, è possibile mappare i gestori di questo tipo in web.config:

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

Esso consente di utilizzare più percorsi, delimitato da virgole. In IIS 7, è in una sezione diversa:

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

Non supporta percorsi multipli, quindi è necessario mappare il gestore per ogni percorso.

Probabilmente dovrete finire la mappatura in entrambi i luoghi perché il server dev interno di Visual Studio utilizza IIS 6 (o IIS 7 in esecuzione in modalità di compatibilità), mentre il server di produzione probabilmente sta usando IIS 7.

+1

Questo è stata la risposta per me, ho aggiornato da 3.5 e MVC 2 a 4.5.2 e MVC 3. sapevo di spostare il alla sezione di , ma fino ad ora non mi rendevo conto che l'uso di 'path' aveva essere alterato, grazie! – WillDud

Problemi correlati