Definições de provedor FTP <providerDefinitions>
Visão geral
O elemento <providerDefinitions>
especifica a coleção de provedores FTP personalizados. O elemento <providerDefinitions>
contém uma coleção de instruções <add>
, cada uma das quais registra um provedor de código gerenciado ou código nativo (COM). O elemento <providerDefinitions>
também contém um elemento <activation>
, que define uma coleção de pares chave/valor personalizados que especificam quaisquer parâmetros necessários para um provedor personalizado.
A partir do FTP 7.5, o serviço FTP dá suporte à extensibilidade para autenticação e funções personalizadas, registro em log e pesquisas de diretórios raiz. Ao criar um provedor de extensibilidade, você deve primeiro registrá-lo no GAC (Cache de Assembly Global do .NET) para provedores de código gerenciado ou no registro do sistema para provedores com código nativo (COM). Para obter informações adicionais sobre como criar provedores FTP personalizados, consulte a seguinte seção no site IIS.net da Microsoft:
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O elemento <providerDefinitions> não foi modificado nos IIS 10.0. |
IIS 8.5 | O elemento <providerDefinitions> não foi modificado nos IIS 8.5. |
IIS 8.0 | O elemento <providerDefinitions> não foi modificado nos IIS 8.0. |
IIS 7.5 | O elemento <providerDefinitions> do elemento <system.ftpServer> é fornecido como um recurso dos IIS 7.5. |
IIS 7.0 | O elemento <providerDefinitions> do elemento <system.ftpServer> foi introduzido no FTP 7.0, que era um download separado para os IIS 7.0. |
IIS 6,0 | O serviço FTP no IIS 6.0 não deu suporte à extensibilidade. |
Observação
Os serviços FTP 7.0 e FTP 7.5 eram fornecidos fora de banda para os IIS 7.0, o que exigiam o download e a instalação de módulos do seguinte URL:
Com o Windows 7 e o Windows Server 2008 R2, o serviço FTP 7.5 é fornecido como um recurso para os IIS 7.5 e, portanto, o download do serviço FTP não é mais necessário.
Instalação
Para dar suporte à publicação FTP para seu servidor Web, você deve instalar o serviço FTP. Para fazer isso, execute as etapas a seguir.
Windows Server 2012 R2 ou Windows Server 2012
Na barra de tarefas, clique em Gerenciador do Servidor.
No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
Na página Funções de servidor, expanda Servidor Web (IIS) e, em seguida, selecione Servidor FTP.
Observação
Para dar suporte à autenticação do ASP.Membership ou do Gerenciador de IIS para o serviço FTP, você precisará selecionar a Extensibilidade de FTP além do Serviço FTP.
.
Selecione Avançar e, em seguida, na página Selecionar recursos, selecione Avançar novamente.
Na página Confirmar seleções de instalação, clique em Instalar.
Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
Expanda Serviços de Informações da Internet e selecione Servidor FTP.
Observação
Para dar suporte à autenticação do ASP.Membership ou do Gerenciador de IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
Clique em OK.
Clique em Fechar.
Windows Server 2008 R2
Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, expanda Servidor FTP.
Selecione Serviço FTP.
Observação
Para dar suporte à autenticação do ASP.Membership ou do Gerenciador de IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
Clique em Avançar.
Na página Confirmar Seleções de Instalação, clique em Instalar.
Na página Resultados , clique em Fechar.
Windows 7
Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
Expanda Serviços de Informações da Internet e, em seguida, Servidor FTP.
Selecione Serviço FTP.
Observação
Para dar suporte à autenticação do ASP.Membership ou do Gerenciador de IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
Clique em OK.
Windows Server 2008 ou Windows Vista
Baixe o pacote de instalação do seguinte URL:
Siga as instruções no seguinte passo a passo para instalar o serviço FTP:
Instruções
Como adicionar um provedor de autenticação personalizada de código gerenciado para um site FTP
Observação
Essas etapas pressupõem que um provedor de autenticação FTP personalizado já foi instalado e registrado no GAC (Cache de Assembly Global) do servidor. Para obter mais informações sobre como registrar assemblies gerenciados, consulte o tópico Ferramenta de Cache de Assembly Global (Gacutil.exe) no site do MSDN da Microsoft.
Determine as informações do assembly para o provedor de extensibilidade:
- No Windows Explorer, abra o caminho "C:\Windows\assembly", onde C: é a unidade do sistema operacional.
- Localize o assembly. Por exemplo, FtpAuthenticationDemo.
- Clique com o botão direito do mouse no assembly e em Propriedades.
- Copie o valor de Cultura. Por exemplo, Neutro.
- Copie o número de Versão. Por exemplo: 1.0.0.0.
- Copie o valor do Token de Chave Pública. Por exemplo, 426f62526f636b73.
- Clique em Cancelar.
Adicione o provedor de extensibilidade à lista global de provedores de autenticação FTP:
- Abra o Gerenciador do IIS (Serviços de Informações da Internet) .
- Clique no nome do computador no painel Conexões.
- Clique duas vezes na Autenticação FTP na janela principal.
- Selecione Provedores Personalizados no painel Ações.
- Clique em Registrar.
- Insira um nome amigável para o provedor de autenticação personalizado na caixa Nome. Por exemplo, FtpAuthenticationDemo.
- Clique em Provedor Gerenciado (.NET).
- Insira as informações do assembly para o provedor de extensibilidade usando as informações copiadas antes. Por exemplo:
FtpAuthentication.FtpAuthDemo, FtpAuthenticationDemo, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73 - Clique em OK.
- Desmarque a caixa de seleção do provedor de autenticação personalizado na lista de provedores.
- Clique em OK.
Adicione o provedor de autenticação personalizada para um site FTP:
- Abra um site FTP no Gerenciador de IIS (Serviços de Informações da Internet).
- Clique duas vezes na Autenticação FTP na janela principal.
- Selecione Provedores Personalizados no painel Ações.
- Marque para selecionar e habilitar o provedor de autenticação personalizado na lista de provedores.
- Clique em OK.
Configuração
O elemento <providerDefinitions>
é configurado no nível global em ApplicationHost.config.
Atributos
Nenhum.
Elementos filho
Elemento | Descrição |
---|---|
add |
Elemento opcional. Especifica as informações de registro para um provedor de código gerenciado ou código nativo (COM). |
activation |
Elemento opcional. Especifica uma coleção de pares nome/valor personalizados que definem todos os parâmetros necessários para um provedor personalizado. Observação: esse elemento foi adicionado ao FTP 7.5. |
Exemplo de configuração
O exemplo a seguir ilustra várias configurações no elemento <system.ftpServer>
global para um servidor. Mais especificamente, as configurações neste exemplo demonstram como:
Habilite o cache de credenciais FTP e especifique um tempo limite de 10 minutos (600 segundos).
Configure a porta baixa como 5000 e a porta alta como 6000 para comunicações de canal de dados.
Habilite o registro em log e especifique que os arquivos de log serão mantidos por site e que os arquivos de log serão girados diariamente por hora UTC.
Especifique um provedor FTP personalizado e especifique um parâmetro personalizado para esse provedor.
Especifique restrições de IP globais que permitem o acesso FTP do host local e negam acesso ao bloco 169.254.0.0 a 169.254.255.255 de endereços IP.
Configure a filtragem de solicitação com as seguintes opções:
- Bloqueie o acesso FTP ao diretório virtual _vti_bin, que é usado com as Extensões de Servidor do FrontPage.
- Bloqueie vários tipos de arquivo associados a executáveis.
- Especifique 100 MB como o tamanho máximo do arquivo.
Adicione uma regra de autorização global que permite o acesso para o grupo de administradores.
Especifique que a sintaxe de nome de domínio pode ser usada para nomes de host virtual 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>
Exemplo de código
Os exemplos a seguir adicionam uma definição de provedor FTP personalizado a um servidor e, em seguida, adicionam um parâmetro de dados para esse provedor.
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
Observação
Defina o parâmetro commit para apphost
quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo 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()