Как зарегистрировать несколько путей для HttpHandler в IIS7? - PullRequest
27 голосов
/ 16 июня 2010

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

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

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

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

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

Ответы [ 2 ]

18 голосов
/ 23 марта 2015

Ответ Дэниела Т:

Оказывается, что сопоставление обработчиков 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>

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

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

6 голосов
/ 16 декабря 2010

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

...