IIS 及其组件由 Windows 公开为可选功能。 这样,用户才能仅启用其站点运行所需的 IIS 功能。 作为副作用,通过 API 配置 IIS 时,可能尚未在计算机上安装功能(例如 Windows 身份验证)。 以前,启用 IIS 功能是通过 DISM.exe、PowerShell 命令或 Windows 可选功能 UI 完成的。 IIS 管理 API 公开了一种安装/卸载这些功能的简单方法,以便使用者无需更改环境即可启用它们依赖的功能。
检查是否已安装功能
管理功能的第一步是检查是否安装了该功能。 对于任何 IIS 功能,我们可以通过将请求发送到其 API 终结点来确定这一点。 如果终结点返回 200 正常 响应,则会安装该功能。 如果未安装该功能,API 将返回 404 未找到 响应,并在正文中返回 未安装功能 JSON 错误对象。 此示例将使用 IIS 的默认文档功能。 我们检查是否通过向默认文档终结点发送 GET 请求来启用默认文档。 我们在查询字符串中使用 范围,其中包含一个空值来指定我们面向 Web 服务器范围。
GET/api/webserver/default-documents?scope=
未安装
404 Not Found
{
"title": "Not found",
"detail": "IIS feature not installed",
"name": "Default Document",
"status": "404"
}
安装了
200 OK
{
"id": "{id}",
"enabled": "true",
"scope": "",
"metadata": {
"is_local": "true",
"is_locked": "false",
"override_mode": "allow",
"override_mode_effective": "allow"
},
"website": null
}
安装功能
通过向功能终结点发出 POST 请求来执行功能安装。 某些 IIS 功能(如 中央证书存储 需要在安装时提供初始设置。 例如,假设默认文档功能返回 404 未安装的功能 响应。 向默认文档终结点发送 POST 请求将安装该功能,然后返回功能设置。
POST/api/webserver/default-documents
HTTP 响应
201 CREATED
Location: /api/webserver/default-documents/{id}
{
"id": "{id}",
"enabled": "true",
"scope": "",
"metadata": {
"is_local": "true",
"is_locked": "false",
"override_mode": "allow",
"override_mode_effective": "allow"
},
"website": null
}
卸载功能
可以通过向 Web 服务器级别的功能发出 DELETE 请求来卸载 IIS 功能。 对于支持网站和应用程序级别的配置的 IIS 功能,可以通过确保 范围 字段为空来验证对象是否表示 Web 服务器范围。
首先获取要卸载的功能的 URI。
GET/api/webserver
{
"id": "{id}",
"_links": {
... // Other features omitted
"default_document": {
"href": "/api/webserver/default-documents/{def-doc-id}"
}
}
}
然后,向功能终结点发出 delete 请求
DELETE/api/webserver/default-documents/{def-doc-id}
204 NO CONTENT