Определения поставщиков <FTPDefinitions>

Общие сведения

Элемент <providerDefinitions> задает коллекцию настраиваемых поставщиков FTP. Элемент <providerDefinitions> содержит коллекцию инструкций <add> , каждая из которых регистрирует поставщик управляемого кода или поставщика машинного кода (COM). Элемент <providerDefinitions> также содержит элемент , определяющий <activation> коллекцию пользовательских пар "ключ-значение", которые задают все параметры, необходимые настраиваемому поставщику.

Начиная с FTP 7.5, служба FTP поддерживает расширяемость для пользовательской проверки подлинности и ролей, ведения журнала и поиска в домашнем каталоге. При создании поставщика расширяемости необходимо сначала зарегистрировать его в глобальном кэше сборок .NET (GAC) для поставщиков управляемого кода или в реестре системы для поставщиков машинного кода (COM). Дополнительные сведения о создании настраиваемых поставщиков FTP см. в следующем разделе на веб-сайте корпорации Майкрософт IIS.net:

Разработка для FTP 7.5

Совместимость

Версия Примечания
IIS 10.0 Элемент <providerDefinitions> не был изменен в IIS 10.0.
IIS 8,5 Элемент <providerDefinitions> не был изменен в IIS 8.5.
IIS 8,0 Элемент <providerDefinitions> не был изменен в IIS 8.0.
IIS 7,5 Элемент <providerDefinitions> элемента поставляется <system.ftpServer> как компонент IIS 7.5.
IIS 7.0 Элемент <providerDefinitions> элемента появился <system.ftpServer> в FTP 7.0, который был отдельной загрузкой для IIS 7.0.
IIS 6,0 Служба FTP в IIS 6.0 не поддерживала расширяемость.

Примечание

Службы FTP 7.0 и FTP 7.5 поставляются внеполосно для IIS 7.0, что требует скачивания и установки модулей по следующему URL-адресу:

https://www.iis.net/expand/FTP

В Windows 7 и Windows Server 2008 R2 служба FTP 7.5 поставляется в качестве функции для IIS 7.5, поэтому скачивание службы FTP больше не требуется.

Настройка

Чтобы обеспечить поддержку публикации FTP для веб-сервера, необходимо установить службу FTP. Для этого выполните следующие действия.

Windows Server 2012 или Windows Server 2012 R2

  1. На панели задач щелкните Диспетчер сервера.

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

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

  4. На странице Роли сервера разверните узел Веб-сервер (IIS) и выберите FTP-сервер.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Помимо службы FTP необходимо выбрать расширяемость FTP.

    Снимок экрана: диалоговое окно .

  5. Нажмите кнопку Далее, а затем на странице Выбор компонентов нажмите кнопку Далее еще раз.

  6. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.

  7. На странице Результаты нажмите кнопку Закрыть.

Windows 8 или Windows 8.1

  1. На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите панель управления.

  2. В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.

  3. Разверните узел Службы IIS, а затем выберите FTP-сервер.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.

    Снимок экрана: диалоговое окно

  4. Нажмите кнопку ОК.

  5. Щелкните Закрыть.

Windows Server 2008 R2

  1. На панели задач нажмите кнопку Пуск, выберите Администрирование, а затем диспетчер сервера.

  2. В области иерархии диспетчер сервера разверните узел Роли и выберите Веб-сервер (IIS).

  3. На панели Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.

  4. На странице Выбор служб ролеймастера добавления служб ролей разверните узел FTP-сервер.

  5. Выберите Служба FTP.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.

    Снимок экрана: страница

  6. Щелкните Далее.

  7. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.

  8. На странице Результаты нажмите кнопку Закрыть.

Windows 7

  1. На панели задач нажмите кнопку Пуск, а затем панель управления.

  2. В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.

  3. Разверните узел Службы IIS, а затем FTP-сервер.

  4. Выберите Служба FTP.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.

    Снимок экрана: диалоговое окно

  5. Нажмите кнопку ОК.

Windows Server 2008 или Windows Vista

  1. Скачайте пакет установки по следующему URL-адресу:

  2. Следуйте инструкциям в следующем пошаговом руководстве, чтобы установить службу FTP:

Инструкции

Добавление пользовательского поставщика проверки подлинности с управляемым кодом для FTP-сайта

Примечание

В этих шагах предполагается, что пользовательский поставщик проверки подлинности FTP уже установлен и зарегистрирован в глобальном кэше сборок (GAC) сервера. Дополнительные сведения о регистрации управляемых сборок см. в статье Средство глобального кэша сборок (Gacutil.exe) на веб-сайте Microsoft MSDN.

  1. Определите сведения о сборке для поставщика расширяемости:

    • В Windows Обозреватель откройте путь "C:\Windows\assembly", где C: — это диск операционной системы.
    • Найдите сборку. Например, ftpAuthenticationDemo.
    • Щелкните сборку правой кнопкой мыши и выберите пункт Свойства.
    • Скопируйте значение языка и региональных параметров . Например, Нейтральный.
    • Скопируйте номер версии . Например, 1.0.0.0.
    • Скопируйте значение токена открытого ключа . Например, 426f62526f636b73.
    • Щелкните Отмена.
  2. Добавьте поставщик расширяемости в глобальный список поставщиков проверки подлинности FTP:

    • Откройте диспетчер служб IIS.
    • Щелкните имя компьютера в области Подключения .
    • Дважды щелкните проверка подлинности FTP в окне main.
      Снимок экрана: окно диспетчера I IS со страницей проверки подлинности F T P.
    • Щелкните Настраиваемые поставщики... в области Действия .
    • Щелкните Зарегистрировать.
      Снимок экрана: диалоговое окно
    • Введите понятное имя для настраиваемого поставщика проверки подлинности в поле Имя . Например, FtpAuthenticationDemo.
    • Щелкните управляемый поставщик (.NET).
      Снимок экрана: диалоговое окно
    • Введите сведения о сборке для поставщика расширяемости, используя сведения, скопированные ранее. Например:
      FtpAuthentication.FtpAuthDemo, FtpAuthenticationDemo, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73
    • Нажмите кнопку ОК.
    • Снимите флажок проверка для настраиваемого поставщика проверки подлинности в списке поставщиков.
    • Нажмите кнопку ОК.
  3. Добавьте настраиваемый поставщик проверки подлинности для FTP-сайта:

    • Откройте FTP-сайт в диспетчере служб IIS.
    • Дважды щелкните элемент Проверка подлинности FTP в окне main.
    • Щелкните Настраиваемые поставщики... в области Действия .
    • Выберите и включите настраиваемый поставщик проверки подлинности в списке поставщиков.
    • Нажмите кнопку ОК.

Конфигурация

Элемент <providerDefinitions> настраивается на глобальном уровне в ApplicationHost.config.

Атрибуты

Отсутствует.

Дочерние элементы

Элемент Описание
add Необязательный элемент.

Указывает сведения о регистрации для поставщика управляемого кода или поставщика машинного кода (COM).
activation Необязательный элемент.

Задает коллекцию настраиваемых пар "имя-значение", которые определяют любые параметры, необходимые настраиваемому поставщику.

Примечание: Этот элемент был добавлен в FTP 7.5.

Образец конфигурации

В следующем примере показано несколько параметров конфигурации в глобальном <system.ftpServer> элементе для сервера. В частности, параметры в этом примере демонстрируют, как:

  • Включите кэширование учетных данных FTP и укажите время ожидания 10 минут (600 секунд).

  • Настройте низкий порт как 5000, а высокий порт — 6000 для обмена данными.

  • Включите ведение журнала и укажите, что файлы журналов будут храниться для каждого сайта, а файлы журналов будут меняться ежедневно по времени UTC.

  • Укажите настраиваемый поставщик FTP и укажите настраиваемый параметр для этого поставщика.

  • Укажите глобальные ограничения IP-адресов, которые разрешают доступ по протоколу FTP с локального узла и запрещают доступ к блоку IP-адресов от 169.254.0.0 до 169.254.255.255.

  • Настройте фильтрацию запросов со следующими параметрами:

    • Блокировать ftp-доступ к виртуальному каталогу _vti_bin, который используется с серверными расширениями FrontPage.
    • Блокировать несколько типов файлов, связанных с исполняемыми файлами.
    • Укажите 100 МБ в качестве максимального размера файла.
  • Добавьте глобальное правило авторизации, которое разрешает доступ для группы администраторов.

  • Укажите, что синтаксис доменных имен можно использовать для имен виртуальных узлов FTP.

<system.ftpServer>
   <caching>
      <credentialsCache enabled="true" flushInterval="600" />
   </caching>
   <firewallSupport lowDataChannelPort="5000" highDataChannelPort="6000" />
   <log centralLogFileMode="Site">
      <centralLogFile period="Daily" localTimeRollover="false" enabled="true" />
   </log>
   <providerDefinitions>
      <add name="FtpXmlAuthentication"
         type="FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73" />
      <activation>
         <providerData name="FtpXmlAuthentication">
            <add key="xmlFileName" value="C:\Inetpub\XmlSample\Users.xml" />
         </providerData>
      </activation>
   </providerDefinitions>
   <security>
      <ipSecurity enableReverseDns="false" allowUnlisted="true">
         <add ipAddress="169.254.0.0" subnetMask="255.255.0.0" allowed="false" />
         <add ipAddress="127.0.0.1" allowed="true" />
      </ipSecurity>
      <requestFiltering>
         <hiddenSegments>
            <add segment="_vti_bin" />
         </hiddenSegments>
         <fileExtensions allowUnlisted="true">
            <add fileExtension="exe" allowed="false" />
            <add fileExtension="cmd" allowed="false" />
            <add fileExtension="com" allowed="false" />
            <add fileExtension="bat" allowed="false" />
         </fileExtensions>
         <requestLimits maxAllowedContentLength="104857600" />
      </requestFiltering>
      <authorization>
         <add accessType="Allow" roles="administrators" permissions="Read, Write" />
      </authorization>
   </security>
   <serverRuntime>
      <hostNameSupport useDomainNameAsHostName="true" />
   </serverRuntime>
</system.ftpServer>

Пример кода

В следующих примерах добавляется настраиваемое определение поставщика FTP на сервер, а затем добавляется параметр данных для этого поставщика.

AppCmd.exe

appcmd.exe set config -section:system.ftpServer/providerDefinitions /+"[name='FtpXmlAuthentication',type='FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73']" /commit:apphost

appcmd.exe set config -section:system.ftpServer/providerDefinitions /+"activation.[name='FtpXmlAuthentication']" /commit:apphost

appcmd.exe set config -section:system.ftpServer/providerDefinitions /+"activation.[name='FtpXmlAuthentication'].[key='xmlFileName',value='C:\Inetpub\wwwroot\App_Data\Users.xml']" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection providerDefinitionsSection = config.GetSection("system.ftpServer/providerDefinitions");
         ConfigurationElementCollection providerDefinitionsCollection = providerDefinitionsSection.GetCollection();

         ConfigurationElement addElement = providerDefinitionsCollection.CreateElement("add");
         addElement["name"] = @"FtpXmlAuthentication";
         addElement["type"] = @"FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73";
         providerDefinitionsCollection.Add(addElement);

         ConfigurationElementCollection activationCollection = providerDefinitionsSection.GetCollection("activation");
         ConfigurationElement providerDataElement = activationCollection.CreateElement("providerData");
         providerDataElement["name"] = @"FtpXmlAuthentication";

         ConfigurationElementCollection providerDataCollection = providerDataElement.GetCollection();
         ConfigurationElement addElement1 = providerDataCollection.CreateElement("add");
         addElement1["key"] = @"xmlFileName";
         addElement1["value"] = @"C:\Inetpub\wwwroot\App_Data\Users.xml";
         providerDataCollection.Add(addElement1);
         activationCollection.Add(providerDataElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim providerDefinitionsSection As ConfigurationSection = config.GetSection("system.ftpServer/providerDefinitions")
      Dim providerDefinitionsCollection As ConfigurationElementCollection = providerDefinitionsSection.GetCollection

      Dim addElement As ConfigurationElement = providerDefinitionsCollection.CreateElement("add")
      addElement("name") = "FtpXmlAuthentication"
      addElement("type") = "FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73"
      providerDefinitionsCollection.Add(addElement)

      Dim activationCollection As ConfigurationElementCollection = providerDefinitionsSection.GetCollection("activation")
      Dim providerDataElement As ConfigurationElement = activationCollection.CreateElement("providerData")
      providerDataElement("name") = "FtpXmlAuthentication"

      Dim providerDataCollection As ConfigurationElementCollection = providerDataElement.GetCollection
      Dim addElement1 As ConfigurationElement = providerDataCollection.CreateElement("add")
      addElement1("key") = "xmlFileName"
      addElement1("value") = "C:\Inetpub\wwwroot\App_Data\Users.xml"
      providerDataCollection.Add(addElement1)
      activationCollection.Add(providerDataElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var providerDefinitionsSection = adminManager.GetAdminSection("system.ftpServer/providerDefinitions", "MACHINE/WEBROOT/APPHOST");
var providerDefinitionsCollection = providerDefinitionsSection.Collection;

var addElement = providerDefinitionsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "FtpXmlAuthentication";
addElement.Properties.Item("type").Value = "FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73";
providerDefinitionsCollection.AddElement(addElement);

var activationCollection = providerDefinitionsSection.ChildElements.Item("activation").Collection;
var providerDataElement = activationCollection.CreateNewElement("providerData");
providerDataElement.Properties.Item("name").Value = "FtpXmlAuthentication";
var providerDataCollection = providerDataElement.Collection;

var addElement1 = providerDataCollection.CreateNewElement("add");
addElement1.Properties.Item("key").Value = "xmlFileName";
addElement1.Properties.Item("value").Value = "C:\\Inetpub\\wwwroot\\App_Data\\Users.xml";
providerDataCollection.AddElement(addElement1);
activationCollection.AddElement(providerDataElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set providerDefinitionsSection = adminManager.GetAdminSection("system.ftpServer/providerDefinitions", "MACHINE/WEBROOT/APPHOST")
Set providerDefinitionsCollection = providerDefinitionsSection.Collection

Set addElement = providerDefinitionsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "FtpXmlAuthentication"
addElement.Properties.Item("type").Value = "FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73"
providerDefinitionsCollection.AddElement(addElement)

Set activationCollection = providerDefinitionsSection.ChildElements.Item("activation").Collection
Set providerDataElement = activationCollection.CreateNewElement("providerData")
providerDataElement.Properties.Item("name").Value = "FtpXmlAuthentication"
Set providerDataCollection = providerDataElement.Collection

Set addElement1 = providerDataCollection.CreateNewElement("add")
addElement1.Properties.Item("key").Value = "xmlFileName"
addElement1.Properties.Item("value").Value = "C:\Inetpub\wwwroot\App_Data\Users.xml"
providerDataCollection.AddElement(addElement1)
activationCollection.AddElement(providerDataElement)

adminManager.CommitChanges()