免费推荐: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访问的详细内容。