Подтвердить что ты не робот

Как зарегистрировать несколько путей для HttpHandler в IIS7?

У меня есть HttpHandler, который изменяет размеры изображений на основе запроса, поэтому запрашивает что-то вроде:

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

предоставит вам изображение размером 320x240.

В IIS Manager, под Handler Mappings, я сопоставил путь моего обработчика как *.jpg,*.gif,*.bmp,*.png. Однако это не активирует обработчик. Если я изменил его на *.jpg, то он будет работать.

Мой вопрос: нужно ли мне создавать 4 отдельных элемента отображения, по одному для каждого типа изображения, или есть способ объединить несколько расширений в один путь?

4b9b3361

Ответ 1

Даниэль Т ответ:

Оказывается, что сопоставление обработчика IIS 7 отличается от отображения обработчика IIS 6. В IIS 6 вы можете сопоставить свои обработчики следующим образом: web.config:

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

Он позволяет использовать несколько путей, разделенных запятой. В IIS 7 он находится в другом разделе:

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

Он не поддерживает несколько путей, поэтому вам нужно сопоставить обработчик для каждого пути.

Вам, вероятно, придется сопоставить его в обоих местах, потому что внутренний dev-сервер Visual Studio использует IIS 6 (или IIS 7, работающий в режиме совместимости), тогда как производственный сервер, вероятно, использует IIS 7.

Ответ 2

Вы можете добавить несколько экземпляров одного и того же обработчика, пока вы изменяете атрибут name.