2012-01-04 41 views
3

我試圖通過c#和Microsoft.Web.Administration組件添加/配置ISAPI篩選器。到目前爲止,我沒有設法爲單個網站添加ISAPI篩選器。使用Microsoft.Web.Administration將ISAPI篩選器添加到現有網站

我剛剛發現this Article (http://www.iis.net/ConfigReference/system.webServer/isapiFilters)用於將其添加到整個IIS的全局設置中。我只是需要一個特定的網站。我正在使用IIS 7.5。

+0

[這裏](http://forums.iis.net/t/1149623.aspx)是一個很好的線程從IIS.net論壇與源代碼顯示如何做你是什麼後。 – 2012-01-04 16:16:51

回答

2

你只需要調整給出的例子(見內嵌批註):

ServerManager serverManager = new ServerManager(); 

Configuration config = serverManager.GetApplicationHostConfiguration(); 

// Change this line:  
ConfigurationSection isapiFiltersSection = 
          config.GetSection("system.webServer/isapiFilters"); 

// To this by adding an extra param specifying the site name: 
ConfigurationSection isapiFiltersSection = 
       config.GetSection("system.webServer/isapiFilters", "my site name"); 


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

如果你不知道該網站的名字,但知道該網站的ID(或IIS號),那麼你可以查詢做的名稱:

int iisNumber = 12345; 
string siteName = serverManager.Sites.Single(s => s.Id == iisNumber).Name;