2013-03-11 3 views
3

У меня есть проблема с сервером IIS,Изменить ISAPI и CGI расширения

Как я могу изменить ISAPI элементы с использованием языка C#?

Пример: ограничение ASP.NET V4.0 «Не разрешено». И я хочу установить как «Разрешено», как показано ниже.

enter image description here

I можно добавить элементы с настоящим Кодексом. Но я не могу изменить.

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(); 
     } 
    } 
} 

Спасибо За ваш совет.

+0

как о 'isapiFiltersCollection.Item [ 'name_here'] [ "включен"] = false; '? – Raptor

ответ

3

Я нашел решение. Я изменил код, как показано ниже. и это сработало.

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();   
     } 
    } 

enter image description here

+0

Я полагаю, что вы имели в виду -> element.SetAttributeValue («разрешено», истинно); – nolan

1

Если вы хотите добавить ограничение, вы можете сделать это с помощью этого кода:

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();    
    }    
} 

 Смежные вопросы

  • Нет связанных вопросов^_^