2010-06-16 10 views
23

Mam HttpHandler że wielkość obrazów na podstawie kwerendy, więc zainteresowanie coś takiego:Jak zarejestrować wiele ścieżek dla HttpHandler w IIS7?

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

dadzą Ci obraz o zmienionym rozmiarze, który jest 320x240.

W IIS Manager, pod Handler Mappings, zmapowałem ścieżkę mojego przewodnika jako *.jpg,*.gif,*.bmp,*.png. Nie aktywuje to jednak programu obsługi. Jeśli zmienię go na *.jpg, to działa.

Moje pytanie brzmi: czy muszę utworzyć 4 oddzielne wpisy mapowania, po jednym dla każdego typu obrazu, czy jest jakiś sposób łączenia wielu rozszerzeń w jedną ścieżkę?

Odpowiedz

6

Możesz dodać wielokrotności tego samego handlera, o ile zmienisz atrybut nazwy.

12

Daniel T za odpowiedź:

Okazuje się, że IIS 7 za mapowanie obsługi jest inna niż IIS 6 za procedury obsługi mapowania. W IIS 6, można mapować ładowarki jak to w web.config:

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

To pozwala na korzystanie z wielu ścieżek, rozdzielanych przecinkami. W IIS 7, to w innej części:

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

Nie obsługuje wiele ścieżek, więc trzeba mapować obsługi dla każdej ścieżki.

Prawdopodobnie będziesz musiał skończyć przyporządkowując je w obu miejscach, ponieważ wewnętrzny serwer dev Visual Studio używa IIS 6 (lub IIS 7 działa w trybie zgodności), natomiast serwer produkcyjny jest prawdopodobnie za pomocą IIS 7.

+1

ten była dla mnie odpowiedzią, zaktualizowałem wersję 3.5 i MVC 2 do wersji 4.5.2 i MVC 3. Wiedziałem, że przenoszę do sekcji , ale do tej pory nie zdawałem sobie sprawy, że użycie "ścieżki" być zmienionym, dzięki! – WillDud

Powiązane problemy