#IIS のインストールこのコラムでは、IIS API を使用して IP アクセスを無効にする方法を紹介します
# #無料の推奨事項:
IIS のインストールMicrosoft.Web.Administration: PS:
Microsoft.Web に基づく単純なパッケージです。管理
Nuget
を通じて検索してインストールできます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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();
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
使用法:
var iisAdministration = new IISAdministration(); iisAdministration.BlockIP("", "192.0.0.1");
注意:
IIS
のルート パスの下の IP マスクに追加します。
このメソッドは例外をスローするため、実行するには管理者権限が必要です。 以上がIIS APIを使用してIPアクセスを無効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。