Как настроить обработчик Http в IIS 7? - PullRequest
5 голосов
/ 24 ноября 2010

Вот что я хочу сделать:

  1. Я создал проект библиотеки классов, в котором есть класс, реализующий интерфейс IHttpHandler.Давайте назовем этот класс ZipHandler.Скажем, пространство имен - Zip.
  2. Я хочу, чтобы всякий раз, когда любой запрос Http приходил на zip-файл, мой ZipHandler обрабатывал его независимо от того, является ли запрос приложением Asp.Net или обычным виртуальным каталогом.

Запросы:

  1. Возможно ли это (нужно дать шумиху по поводу интегрированного конвейера и т. Д. В IIS 7)?
  2. Как это сделать?

Ответы [ 3 ]

6 голосов
/ 24 ноября 2010

Вот информация, которую я искал:

Если вы хотите зарегистрировать свой собственный обработчик HTTP на уровне веб-сервера IIS 7, вы должны скомпилировать свой обработчик HTTP в сборку со строгим именем иразверните его в глобальном кэше сборок (GAC), поскольку IIS 7 собирает только сборки, развернутые в GAC.Он не принимает сборки, развернутые где-либо еще, например, в каталоге bin определенного веб-сайта или веб-приложения.

Мы стремимся добавить этот обработчик на уровне веб-сервера.После развертывания обработчика в GAC откройте файл web.config, доступный на уровне веб-сервера (щелкните правой кнопкой мыши и перейдите -> откройте страницу web.config, показанную здесь) и вставьте нечто подобное в раздел обработчика (полное имя класса):

<handlers>
<add name="Ch8_RssHandler" path="*.rss" verb="*"
type="ProIIS7AspNetIntegProgCh8.RssHandler, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=369d834a77" preCondition="integratedMode" />
</handlers>

Примечание: фрагменты информации (1-й абзац и пример кода) взяты из книги:
Профессиональное интегрированное программирование IIS 7 и ASP.Net доктора Шахрама Хосрави

Похоже, очень хорошая книга :)

3 голосов
/ 24 ноября 2010

Эта статья MSDN Как: настроить расширение обработчика HTTP в IIS , объясняет, что вам нужно сделать. Смотрите параграф для Интегрированного режима.

Расширение имени файла для .zeip должно быть зарегистрировано как в элементе httpHandlers , так и в элементе handlers.

Вам нужно будет нажать Добавить управляемый обработчик на панели действий.

Использование диспетчера IIS в IIS 7.0 для добавления пользовательского расширения обработчика эквивалентно регистрации расширения обработчика в файле Web.config.

2 голосов
/ 27 сентября 2012

Я сделал тест в VS2012

Мой обработчик такой

namespace MyProject
{
    public class ZipHandler: IHttpHandler
    {
        public bool IsReusable { get { return true; } }
        public void ProcessRequest(HttpContext context) { ... }
    }
}

Мой web.config

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.webServer>
    <handlers>
      <add
        name="ZipHandler"
        path="*.zip"
        verb="*"
        type="MyProject.ZipHandler"
        preCondition="integratedMode"
      />
    </handlers>
  </system.webServer>

</configuration>

Таким образом, я могу запросить «foo.zip», и мой обработчик получит запрос.

Также есть сообщение от Рика Стрэла, которое может помочь вам разобраться в проблемах с обработчиками и модулями: Разделы HttpModule и HttpHandler в файлах IIS 7 web.config

...