Практическое руководство. Регистрация обработчиков HTTP-данных

Visual Studio 2010

Обновлен: Ноябрь 2007

После создания пользовательского класса обработчика HTTP-данных необходимо зарегистрировать его в файле Web.config приложения. Это позволит ASP.NET вызывать обработчик HTTP-данных для обслуживания запросов на ресурсы, имеющие заданное расширение имени файла.

Способ регистрации обработчика HTTP-данных зависит от версии служб Internet Information Services (IIS), в которых размещено приложение. В IIS 6.0 регистрация выполняется с помощью раздела httpHandlers файла Web.config. В IIS 7.0, при работе в классическом режиме, обработчик регистрируется в разделе httpHandlers и сопоставляется с файлом Aspnet_isapi.dll. В IIS 7.0, при работе в интегрированном режиме, регистрация выполняется с помощью элемента handlers в разделе system.WebServer.

Регистрация обработчика HTTP-данных в IIS 6.0

  1. Скомпилируйте класс обработчика HTTP-данных и скопируйте полученную сборку в папку Bin, вложенную в корневую папку приложения.

    —либо—

    Поместите в папку App_Code приложения код для обработчика.

    Пример обработчика HTTP-данных представлен в разделе Пошаговое руководство: создание синхронного обработчика HTTP.

  2. В файле Web.config приложения создайте раздел httpHandlers.

    В следующем примере показано, как зарегистрировать обработчик HTTP-данных, отвечающий на запросы на ресурс SampleHandler.new. Обработчик определен как класс SampleHandler в сборке SampleHandlerAssembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" />
        </httpHandlers>
      <system.web>
    </configuration>
    

    Следующий пример сопоставляет все HTTP-запросы на файлы с расширением «.SampleFileExtension» с классом SampleHandler2. В этом случае код обработчика находится в папке App_Code, поэтому не нужно указывать сборку.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2 " />
        </httpHandlers>
      <system.web>
    </configuration>
    
  3. Настройте службы IIS на передачу ASP.NET запросов на пользовательские расширения имен файлов.

    Дополнительные сведения см. в разделе Практическое руководство. Настройка расширений для обработчиков HTTP-данных в IIS.

Регистрация обработчика HTTP-данных в IIS 7.0 в классическом режиме

  1. Скомпилируйте класс обработчика HTTP-данных и скопируйте полученную сборку в папку Bin, вложенную в корневую папку приложения.

    —либо—

    Поместите в папку App_Code приложения код для обработчика.

    Пример обработчика HTTP-данных представлен в разделе Пошаговое руководство: создание синхронного обработчика HTTP.

  2. В файле Web.config приложения создайте раздел httpHandlers.

  3. Создайте раздел system.webServer внутри элемента configuration.

  4. Создайте элемент handlers внутри раздела system.WebServer.

    46c5ddfy.alert_note(ru-ru,VS.100).gifПримечание.

    Оба элемента должны быть определены: и httpHandlers, и handlers.

    В следующем примере показано, как зарегистрировать обработчик HTTP-данных, отвечающий на запросы на ресурс SampleHandler.new. Обработчик определен как класс SampleHandler в сборке SampleHandlerAssembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" />
        </httpHandlers>
      <system.web>
      <system.webServer>
        <add name=SampleHandler" verb="*" path="SampleHandler.new" 
          Modules="IsapiModule" 
          scriptProcessor="FrameworkPath\aspnet_isapi.dll"
          resourceType="File" />
      </system.webServer>
    </configuration>
    

    Замените FrameworkPath верным путем к файлу Aspnet_isapi.dll.

    Следующий пример сопоставляет все HTTP-запросы на файлы с расширением «.SampleFileExtension» с классом SampleHandler2. В этом случае код обработчика находится в папке App_Code, поэтому не нужно указывать сборку.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2" />
        </httpHandlers>
      <system.web>
      <system.webServer>
        <add name=SampleHandler2" verb="*" path="*.SampleFileExtension" 
          Modules="IsapiModule" 
          scriptProcessor="FrameworkPath\aspnet_isapi.dll"
          resourceType="File" />
      </system.webServer>
    </configuration>
    

    Замените FrameworkPath верным путем к файлу Aspnet_isapi.dll.

    46c5ddfy.alert_note(ru-ru,VS.100).gifПримечание.

    В IIS 7.0 при выполнении в классическом режиме не нужно дополнительно использовать диспетчер IIS для сопоставления расширения имени файла с Aspnet_isapi.dll file, как это делается в IIS 6.0. Можете сопоставить расширение в файле Web.config.

Регистрация обработчика HTTP-данных в IIS 7.0 в интегрированном режиме

  1. Скомпилируйте класс обработчика HTTP-данных и скопируйте полученную сборку в папку Bin, вложенную в корневую папку приложения.

    —либо—

    Поместите в папку App_Code приложения код для обработчика.

    Пример обработчика HTTP-данных представлен в разделе Пошаговое руководство: создание синхронного обработчика HTTP.

  2. В файле Web.config приложения создайте элемент handlers в разделе system.webServer.

    46c5ddfy.alert_note(ru-ru,VS.100).gifПримечание.

    Обработчики, определенные в элементе httpHandlers, не используются. Если не удалить регистрации httpHandlers, то нужно будет задать атрибуту validateIntegratedModeConfiguration элемента validation значение false, чтобы избежать ошибок в дальнейшем. Элемент validation является дочерним для элемента system.webServer. Дополнительные сведения см. в подразделе «Отключение сообщения об ошибке миграции» (Disabling the migration error message) раздела Интеграция ASP.NET и служб IIS 7.0 (ASP.NET Integration with IIS 7.0).

    В следующем примере показано, как зарегистрировать обработчик HTTP-данных, отвечающий на запросы на ресурс SampleHandler.new. Обработчик определен как класс SampleHandler в сборке SampleHandlerAssembly.

    <configuration>
      <system.webServer>
        <handlers>
          <add name="SampleHandler" verb="*" 
            path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" 
            resourceType="Unspecified" />
        </handlers>
      <system.webServer>
    </configuration>
    
    46c5ddfy.alert_note(ru-ru,VS.100).gifПримечание.

    Атрибут resourceType выполняет ту же функцию, что и параметр Verify file exists в диспетчере служб IIS для IIS 6.0.

    В следующем примере показано, как сопоставить все HTTP-запросы к файлам, имеющим расширение «.SampleFileExtension», с классом обработчика HTTP-данных SampleHandler2. В этом случае код обработчика находится в папке App_Code, поэтому не нужно указывать сборку.

    <configuration>
      <system.webServer>
        <handlers>
          <add name="SampleHandler2" verb="*"
            path="*.SampleFileExtension" 
            type="SampleHandler2" />
            resourceType="Unspecified" />
        <handlers>
      <system.webServer>
    </configuration>
    

    В IIS 7.0 при работе в интегрированном режиме требуется только регистрация в элементе handlers.

    Подробные сведения об элементе конфигурации web.webServer IIS см. в разделе system.webServer Section Group (IIS Settings Schema) на веб-узле библиотеки MSDN.

    Подробнее о том, как настраивать обработчик для пользовательских расширений имен файлов см. в разделе Практическое руководство. Настройка расширений для обработчиков HTTP-данных в IIS.

Показ: