2010-11-24 4 views
5

Вот что я хочу сделать:Как настроить Http-обработчик в IIS 7?

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

запросы:

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

ответ

6

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

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

Мы стремимся добавить этот обработчик на уровне веб-сервера. После развертывания обработчика в GAC откройте 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> 

Примечание: Информация расширенного описания (первый пункт и образец кода), взяты из книги:
Professional IIS 7 and ASP.Net Integrated Programming by Dr. Shahram Khosravi

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

3

В этой статье MSDN How to: Configure an HTTP Handler Extension in IIS объясняется, что вам нужно делать. См. Параграф для интегрированного режима.

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

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

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

1

Я сделал тест в 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» и есть мой обработчик получить запрос.

Существует также сообщение от Rick Strahl, которое поможет вам устранить проблемы с обработчиками и модулями: HttpModule and HttpHandler sections in IIS 7 web.config files