目錄
Microsoft IIS Administration 微軟提供,管理IIS配置的REST API 和集中化IIS管理WEB UI。
l 支持絕大部分IIS配置項管理
l 支持管理遠程IIS,實現集中化IIS配置管理。
l 支持REST API,方便集成到自研系統。
l 支持IIS配置訪問安全性設置
Github:https://github.com/Microsoft/IIS.Administration
微軟官網使用文檔:https://docs.microsoft.com/en-us/IIS-Administration/
下載:https://docs.microsoft.com/en-us/IIS-Administration/getting-started
環境要求:
l 操作系統Windows7版本及以上版本
l IIS Administration API 依賴.NET Core,在安裝IIS Administration安裝包時,會按需自動安裝
安裝完后:
Windows服務名:Microsoft IIS Administration
Microsoft IIS Administration API地址:https://localhost:55539 (可以使用IP地址訪問,但是會遇到權限問題,修改權限的方法在下面“修改配置文件”中介紹)
Web UI管理地址:https://manage.iis.net/get
獲取AccessToken
進入https://localhost:55539/connect,創建一個Access Key
拿到accesstoken后
l 通過地址:https://localhost:55539/connect 進入api展示界面(https://localhost:55539/#/api),查看可在自己的程序中通過rest api 訪問iis信息
l 通過地址:https://manage.iis.net/connect 進入UI管理界面
1) 配置文件路徑:%SystemDrive%\Program Files\IIS Administration\<version>\Microsoft.IIS.Administration\config\**
2) 修改配置文件后需要重啟windows服務(Microsoft IIS Administration)
3) appsettings.json 配置:安全性、日志、audit(審計)、cors(跨域)、訪問用戶、只讀等,詳細查看文檔。
4) modules.json配置:啟用或禁用IIS配置模塊
配置修改示例
示例一、訪問https://遠程IP地址:55539/connect ,出現windows登錄驗證框
修改點:修改appsettings.json,將"require_windows_authentication"設置為 false
示例二、編碼訪問IIS Administration REST API 報401沒有權限訪問
修改點:修改appsettings.json,"access_policy" -> "api" ->"users": "administrators"修改為:"users": "Everyone"
appsettings.json修改后類似如下:(默認會將執行安裝包的角色加入到安全設置中)
"security": {
"require_windows_authentication": false, // 默認為true
"users": {
"administrators": [
……
],
"owners": [
……
]
},
"access_policy": {
"api": {
"users": "Everyone", // 默認為執行安裝包角色
"access_key": true
},
"api_keys": {
"users": "administrators",
"access_key": false
},
"system": {
"users": "owners",
"access_key": true
}
}
}
前面介紹中拿到Access Token后,進入 https://manage.iis.net 管理界面
支持遠程IIS管理
IIS服務器的系統資源監控
IIS根節點配置管理
IIS上的站點信息
IIS上的特定站點配置管理
包括:綁定信息、應用程序池、虛擬目錄下的應用程序、身份驗證、默認文檔、目錄瀏覽、IP限制、日志、MIME類型、監控、模塊、響應壓縮、請求篩選、HTTP響應標頭、請求跟蹤、靜態緩存、HTTP重定向等
前面介紹中拿到Access Token后,進入 https://localhost:55539/#/api
METHOD DESCRIPTION
GET Retrieves the specified resource
POST Creates a resource
PATCH Updates the specified resource
DELETE Deletes the specified resource
HEAD Similar to get except only returns HTTP headers
示例
https://docs.microsoft.com/en-us/IIS-Administration/api/crud
代碼示例RestSharp
var client = new RestClient(iisAdminBaseUrl);
ServicePointManager.ServerCertificateValidationCallback +=
(sender, certificate, chain, sslPolicyErrors) => true;
var request = new RestRequest("/api/webserver/websites", Method.GET);
request.AddHeader("Access-Token", $"Bearer {token}");
request.AddHeader("Accept", "application/hal+json");
IRestResponse response = client.Execute(request);
if (response.IsSuccessful)
{ …… }
代碼示例HttpClient
var apiClient = new HttpClient(new HttpClientHandler()
{
UseDefaultCredentials = true,
ServerCertificateCustomValidationCallback = (message, cert, chain, error) => true
}, true);
// Set access token for every request
apiClient.DefaultRequestHeaders.Add("Access-Token", "Bearer {token}");
// Request HAL (_links)
apiClient.DefaultRequestHeaders.Add("Accept", "application/hal+json");
var res = await apiClient.GetAsync("https://localhost:55539/api/webserver/websites");
if (res.StatusCode != HttpStatusCode.OK) {
HandleError(res);
return;
}
JArray sites = JObject.Parse(res.Content.ReadAsStringAsync().Result).Value<JArray>("websites");
推薦閱讀:
===========================================
over,謝謝閱讀,若對你有幫助,請幫推薦下。











