В Server 2008+ я программно создаю новые папки в виртуальном каталоге Reports на FTP-сайте. Я могу создать новое правило авторизации FTP для каждого нового пути к файлу с помощью:
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection authorizationSection = config.GetSection("system.ftpServer/security/authorization", "FTP/LDNClient/Reports/aClientPath");
ConfigurationElementCollection authorizationCollection = authorizationSection.GetCollection();
ConfigurationElement addElement = authorizationCollection.CreateElement("add");
addElement["accessType"] = @"Allow";
addElement["users"] = @"LDNClient";
addElement["roles"] = @"";
addElement["permissions"] = @"Read, Write";
authorizationCollection.Add(addElement);
serverManager.CommitChanges();
}
Где «FTP/LDNClient/Reports/aClientPath» — это путь к правилу. Но есть большое количество элементов для одного и того же пользователя с разными путями. Если я открою applicationHost.config, я увижу разные ConfigurationElements с такими путями, как «aClientPath»:
<location path="FTP/LDNClient/Reports/aClientPath">
<system.ftpServer>
<security>
<authorization>
<remove users="LDNClient" roles="" permissions="Write" />
<add accessType="Allow" users="LDNClient" permissions="Read, Write" />
</authorization>
</security>
</system.ftpServer>
</location>
Но я не могу понять, как сослаться на этот элемент, поэтому я могу либо (1) удалить его, либо (2) изменить разрешения. Я могу прокрутить каждый узел с помощью:
foreach (ConfigurationElement item in authorizationCollection)
{
// Do something with item here
}
Но я могу найти путь для aClientPath в «элементе». Используя указанный выше узел местоположения, как мне удалить его или изменить его разрешения?