Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Общие сведения
Элемент <providerDefinitions> задает коллекцию настраиваемых поставщиков FTP. Элемент <providerDefinitions> содержит коллекцию инструкций <add> , каждая из которых регистрирует поставщик управляемого кода или поставщика машинного кода (COM). Элемент <providerDefinitions> также содержит элемент , определяющий <activation> коллекцию пользовательских пар "ключ-значение", которые задают все параметры, необходимые настраиваемому поставщику.
Начиная с FTP 7.5, служба FTP поддерживает расширяемость для пользовательской проверки подлинности и ролей, ведения журнала и поиска в домашнем каталоге. При создании поставщика расширяемости необходимо сначала зарегистрировать его в глобальном кэше сборок .NET (GAC) для поставщиков управляемого кода или в реестре системы для поставщиков машинного кода (COM). Дополнительные сведения о создании настраиваемых поставщиков FTP см. в следующем разделе на веб-сайте корпорации Майкрософт IIS.net:
Совместимость
| Версия | Примечания |
|---|---|
| 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-адресу:
В Windows 7 и Windows Server 2008 R2 служба FTP 7.5 поставляется в качестве функции для IIS 7.5, поэтому скачивание службы FTP больше не требуется.
Настройка
Чтобы обеспечить поддержку публикации FTP для веб-сервера, необходимо установить службу FTP. Для этого выполните следующие действия.
Windows Server 2012 или Windows Server 2012 R2
На панели задач щелкните Диспетчер сервера.
В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.
В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
На странице Роли сервера разверните узел Веб-сервер (IIS) и выберите FTP-сервер.
Примечание
Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Помимо службы FTP необходимо выбрать расширяемость FTP.
.Нажмите кнопку Далее, а затем на странице Выбор компонентов нажмите кнопку Далее еще раз.
На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
На странице Результаты нажмите кнопку Закрыть.
Windows 8 или Windows 8.1
На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите панель управления.
В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
Разверните узел Службы IIS, а затем выберите FTP-сервер.
Примечание
Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
Нажмите кнопку ОК.
Щелкните Закрыть.
Windows Server 2008 R2
На панели задач нажмите кнопку Пуск, выберите Администрирование, а затем диспетчер сервера.
В области иерархии диспетчер сервера разверните узел Роли и выберите Веб-сервер (IIS).
На панели Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.
На странице Выбор служб ролеймастера добавления служб ролей разверните узел FTP-сервер.
Выберите Служба FTP.
Примечание
Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
Щелкните Далее.
На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
На странице Результаты нажмите кнопку Закрыть.
Windows 7
На панели задач нажмите кнопку Пуск, а затем панель управления.
В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
Разверните узел Службы IIS, а затем FTP-сервер.
Выберите Служба FTP.
Примечание
Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
Нажмите кнопку ОК.
Windows Server 2008 или Windows Vista
Скачайте пакет установки по следующему URL-адресу:
Следуйте инструкциям в следующем пошаговом руководстве, чтобы установить службу FTP:
Инструкции
Добавление пользовательского поставщика проверки подлинности с управляемым кодом для FTP-сайта
Примечание
В этих шагах предполагается, что пользовательский поставщик проверки подлинности FTP уже установлен и зарегистрирован в глобальном кэше сборок (GAC) сервера. Дополнительные сведения о регистрации управляемых сборок см. в статье Средство глобального кэша сборок (Gacutil.exe) на веб-сайте Microsoft MSDN.
Определите сведения о сборке для поставщика расширяемости:
- В Windows Обозреватель откройте путь "C:\Windows\assembly", где C: — это диск операционной системы.
- Найдите сборку. Например, ftpAuthenticationDemo.
- Щелкните сборку правой кнопкой мыши и выберите пункт Свойства.
- Скопируйте значение языка и региональных параметров . Например, Нейтральный.
- Скопируйте номер версии . Например, 1.0.0.0.
- Скопируйте значение токена открытого ключа . Например, 426f62526f636b73.
- Щелкните Отмена.
Добавьте поставщик расширяемости в глобальный список поставщиков проверки подлинности FTP:
- Откройте диспетчер служб IIS.
- Щелкните имя компьютера в области Подключения .
- Дважды щелкните проверка подлинности FTP в окне main.
- Щелкните Настраиваемые поставщики... в области Действия .
- Щелкните Зарегистрировать.
- Введите понятное имя для настраиваемого поставщика проверки подлинности в поле Имя . Например, FtpAuthenticationDemo.
- Щелкните управляемый поставщик (.NET).
- Введите сведения о сборке для поставщика расширяемости, используя сведения, скопированные ранее. Например:
FtpAuthentication.FtpAuthDemo, FtpAuthenticationDemo, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73 - Нажмите кнопку ОК.
- Снимите флажок проверка для настраиваемого поставщика проверки подлинности в списке поставщиков.
- Нажмите кнопку ОК.
Добавьте настраиваемый поставщик проверки подлинности для 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()