IIS安裝欄位介紹如何使用IIS API停用IP存取
免費推薦: IIS安裝
這個類別是基於Microsoft.Web.Administration
寫的一個簡單封裝:
PS: Microsoft.Web.Administration
可透過Nuget
搜尋安裝。
public class IISAdministration { private readonly ServerManager serverManager; public IISAdministration() { serverManager = new ServerManager(); } public IEnumerable<WorkerProcess> GetWorkerProcesses() { return serverManager.WorkerProcesses; } public IEnumerable<string> GetSiteNames() { foreach (var item in GetWorkerProcesses()) { yield return item.AppPoolName; } } public ConfigurationElementCollection GetIpSecurityCollection(string site) { return GetConfigurationElementCollection("system.webServer/security/ipSecurity", site); } public ConfigurationElementCollection GetConfigurationElementCollection(string sectionName, string site = "") { var config = serverManager.GetApplicationHostConfiguration(); ConfigurationSection section; if (string.IsNullOrWhiteSpace(site)) { section = config.GetSection(sectionName); } else { section = config.GetSection(sectionName, site); } return section.GetCollection(); } public void CreateElement(ConfigurationElementCollection section, ConfigurationElement element) { section.Add(element); serverManager.CommitChanges(); } public void RemoveElement(ConfigurationElementCollection section, ConfigurationElement element) { section.Remove(element); serverManager.CommitChanges(); } public bool HasBlocked(string siteName, string ip) { var ipSecurityCollection = this.GetIpSecurityCollection(siteName); for (int i = 0; i < ipSecurityCollection.Count; i++) { var element = ipSecurityCollection[i]; if ((string)element["ipAddress"] == ip) { return true; } } return false; } public void FreeIP(string siteName, string ip) { if (!HasBlocked(siteName, ip)) { return; } var ipSecurityCollection = this.GetIpSecurityCollection(siteName); for (int i = 0; i < ipSecurityCollection.Count; i++) { var element = ipSecurityCollection[i]; if ((string)element["ipAddress"] == ip) { this.RemoveElement(ipSecurityCollection, element); break; } } } public void BlockIP(string siteName, string ip) { if (HasBlocked(siteName, ip)) { return; } var ipSecurityCollection = this.GetIpSecurityCollection(siteName); var element = ipSecurityCollection.CreateElement("add"); element["ipAddress"] = ip; element["allowed"] = false; ipSecurityCollection.Add(element); serverManager.CommitChanges(); } }
使用方法:
var iisAdministration = new IISAdministration(); iisAdministration.BlockIP("", "192.0.0.1");
注意:
#BlockIP
第一個參數為網站名,如果空字串,則直接新增到IIS
根路徑下的IP屏蔽。 以上是如何使用IIS API禁用IP訪問的詳細內容。更多資訊請關注PHP中文網其他相關文章!