使用IIS API禁用IP访问
IIS安装栏目介绍如何使用IIS API禁用IP访问
这个类是基于 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屏蔽。- 此方法会抛出异常,而且需要管理员权限才可执行。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tangbbikc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01