IIS Installation이 칼럼에서는 IIS API를 사용하여 IP 액세스를 비활성화하는 방법을 소개합니다.
무료 권장 사항: IIS Installation
이 클래스는 Microsoft.Web.Administration
을 기반으로 합니다. code> 간단한 패키지:
PS: Microsoft.Web.Administration
은 Nuget
를 통해 검색하고 설치할 수 있습니다. 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
rrreeeBlockIP
첫 번째 매개변수는 사이트 이름입니다. 빈 문자열인 경우 IIS 경로 아래 루트 IP 차단. 🎜🎜이 방법은 예외를 발생시키며 실행하려면 관리자 권한이 필요합니다. 🎜🎜
위 내용은 IIS API를 사용하여 IP 액세스를 비활성화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!