ホームページ  >  記事  >  トピック  >  IIS APIを使用してIPアクセスを無効にする方法

IIS APIを使用してIPアクセスを無効にする方法

coldplay.xixi
coldplay.xixi転載
2020-12-18 17:47:387534ブラウズ

#IIS のインストールこのコラムでは、IIS API を使用して IP アクセスを無効にする方法を紹介します

IIS APIを使用してIPアクセスを無効にする方法# #無料の推奨事項:

IIS のインストール

このクラスは、

Microsoft.Web.Administration

: PS: Microsoft.Web に基づく単純なパッケージです。管理
Nuget を通じて検索してインストールできます。 <pre class="brush:php;toolbar:false">public class IISAdministration {     private readonly ServerManager serverManager;     public IISAdministration()     {         serverManager = new ServerManager();     }     public IEnumerable&lt;WorkerProcess&gt; GetWorkerProcesses()     {         return serverManager.WorkerProcesses;     }     public IEnumerable&lt;string&gt; GetSiteNames()     {         foreach (var item in GetWorkerProcesses())         {             yield return item.AppPoolName;         }     }     public ConfigurationElementCollection GetIpSecurityCollection(string site)     {         return GetConfigurationElementCollection(&quot;system.webServer/security/ipSecurity&quot;, site);     }     public ConfigurationElementCollection GetConfigurationElementCollection(string sectionName, string site = &quot;&quot;)     {         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 &lt; ipSecurityCollection.Count; i++)         {             var element = ipSecurityCollection[i];             if ((string)element[&quot;ipAddress&quot;] == 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 &lt; ipSecurityCollection.Count; i++)         {             var element = ipSecurityCollection[i];             if ((string)element[&quot;ipAddress&quot;] == 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(&quot;add&quot;);         element[&quot;ipAddress&quot;] = ip;         element[&quot;allowed&quot;] = false;         ipSecurityCollection.Add(element);         serverManager.CommitChanges();     } }</pre>使用法:

var iisAdministration = new IISAdministration();
iisAdministration.BlockIP("", "192.0.0.1");

注意:

    BlockIP
  1. 最初のパラメータはサイト名です。空の文字列の場合は、 IIS のルート パスの下の IP マスクに追加します。 このメソッドは例外をスローするため、実行するには管理者権限が必要です。

以上がIIS APIを使用してIPアクセスを無効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjianshu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。