Изменить расширения ISAPI и CGI
У меня проблема с сервером IIS,
Как я могу изменить элементы ISAPI с использованием языка C#?
Пример: ограничение ASP.net V4.0 - "Не разрешено". И я хочу установить "Разрешено", как на картинке ниже.
Я могу добавить элементы с этим кодом. Но я не могу изменить.
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 isapiFiltersSection = config.GetSection("system.webServer/isapiFilters");
ConfigurationElementCollection isapiFiltersCollection = isapiFiltersSection.GetCollection();
ConfigurationElement filterElement = isapiFiltersCollection.CreateElement("filter");
filterElement["name"] = @"SalesQueryIsapi";
filterElement["path"] = @"c:\Inetpub\www.contoso.com\filters\SalesQueryIsapi.dll";
filterElement["enabled"] = true;
filterElement["enableCache"] = true;
isapiFiltersCollection.Add(filterElement);
serverManager.CommitChanges();
}
}
}
Спасибо за совет.
2 ответа
Решение
Я нашел решение. Я изменил код, как показано ниже. и это сработало.
private void buttonOK_Click(object sender, EventArgs e)
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection isapiCgiRestrictionSection = config.GetSection("system.webServer/security/isapiCgiRestriction");
ConfigurationElementCollection isapiCgiRestrictionCollection = isapiCgiRestrictionSection.GetCollection();
foreach (ConfigurationElement element in isapiCgiRestrictionCollection)
{
element.SetAttributeValue("allowed", false);
}
ConfigurationElement addElement = isapiCgiRestrictionCollection.CreateElement("add");
serverManager.CommitChanges();
}
}
Если вы хотите добавить ограничение, вы можете сделать это с помощью этого кода:
public static void AddIsapiRestriction(string name, string path)
{
using (var serverManager = new ServerManager())
{
var config = serverManager.GetApplicationHostConfiguration();
var isapiCgiRestrictionSection = config.GetSection("system.webServer/security/isapiCgiRestriction");
var isapiCgiRestrictionCollection = isapiCgiRestrictionSection.GetCollection();
if (isapiCgiRestrictionCollection.ToList().Exists(x => x.GetAttribute("path").Value.ToString() == path))
return;
var addElement = isapiCgiRestrictionCollection.CreateElement("add");
addElement["description"] = name;
addElement["path"] = path;
addElement["allowed"] = true;
isapiCgiRestrictionCollection.Add(addElement);
serverManager.CommitChanges();
}
}