ASP.NET MVC 網頁應用程式 (含 ASP.NET Core MVC) 與過去 Web Form 專案架構有所不同,所以在使用 IIS IP 位址與網域限制功能時並沒有這麼的直覺。過去在 ASP 或 Web Form 應用程式,只需要 內容檢視 > 選取該 asp 或 .aspx 檔案 > 切換功能檢視 > IP 位址與網域限制,即可限制該網頁存取。


但 ASP.NET MVC 應用程式 (包含 ASP.NET Core MVC) 呢? 似乎沒有辦法透過 IIS 介面方式進行設定 ?   實際上是可以的,本篇文章皆簡單介紹如何透過 IIS IP 位址與網域限制功能 對 ASP.NET MVC 應用程式中特定網頁限制存取,若有錯誤或任何建議,請各位先進不吝提出。







IIS Location Tag 是用來對特定資源進行各別設定,它位在  %WINDIR%\System32\inetsrv\config\ applicationHost.config 設定檔案內。 applicationHost.config 是整個 IIS 站台的設定 (描述) 檔案,若您是專業的 IIS 管理者,對這個設定檔案一定不陌生。下圖為  Location Tag 範例,你可以透過 Path 屬性指定特定資源,如下圖中 path="Test",表示指定 Test 這個站台,啟用基礎驗證並關閉匿名驗證。



IIS 管理介面上設定時,設定內容會同步寫入至 applicationHost.config 內

重要:修改 applicationHost.config 會導致整個站台重新讀取設定,影響效能,請於離峰時間設定

在開始設定之前,強烈建議備份 applicationHost.config,以免改錯導致整個 IIS 站台毀損。正規的方式是透過指令 (本篇不贅述,有時間再撰寫文章說明如何正確備份),您也可以直接複製此檔案到其他資料夾即可。





當我們要指定只有特定 IP 來源可以存取 ASP.NET MVC 應用程式內某個 URL,你可以加上下列語法 




上面的語法表示:

Path:指定 Website 名稱/Home/Contact 資源

allowUnlisted="false":若沒有指定用戶端存取,則一律拒絕存取

ipAddress="127.0.0.1" allowed="true":允許 IP 127.0.0.1 存取

經過這樣設定,除了允許的 IP Address,其他來源非這個 IP 的使用者,則無法存取 Home/Contact,達到我們的目的





理所當然,這種方式不需要更改程式碼並重新部署,但 伺服器在橫向擴充部署到新伺服器 時可能會忘記設定 IIS 設定。長期規劃建議可以 IP 白名單功能寫在專案內,減少重新部署時的工作步驟。