配置 HTTP 和 HTTPS

WCF 服务和客户端可以通过 HTTP 和 HTTPS 进行通信。 HTTP/HTTPS 设置是使用 Internet Information Services (IIS) 或命令行工具配置的。 当 WCF 服务托管在 IIS 下时,可以在 IIS 中配置 HTTP 或 HTTPS 设置(使用 inetmgr.exe 工具)。 如果 WCF 服务是自承载的,则使用命令行工具配置 HTTP 或 HTTPS 设置。

您至少需要配置 URL 注册,并为您的服务将使用的 URL 添加防火墙例外。 您可以使用 Netsh.exe 工具配置这些设置。

配置命名空间预留

命名空间预留将 HTTP URL 命名空间的一部分的权限分配给特定的用户组。 预留赋予这些用户创建侦听命名空间的该部分的服务的权限。 预留是 URL 前缀,这意味着预留涵盖预留路径的所有子路径。 命名空间预留允许两种使用通配符的方法。 HTTP 服务器 API 文档介绍了 涉及通配符的命名空间声明之间的解析顺序

正在运行的应用程序可以创建类似的请求来添加命名空间注册。 注册和预留会争夺命名空间的各个部分。 根据 涉及通配符的命名空间声明之间的解析顺序中给出的解析顺序,保留可能优先于注册。 在这种情况下,预留会阻止正在运行的应用程序接收请求。

以下示例使用 Netsh.exe 工具:

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

此命令为 DOMAIN\user 账户的指定 URL 命名空间添加 URL 预留。 有关使用 netsh 命令的更多信息,请键入 netsh http add urlacl /? 命令提示符并按 Enter。

配置防火墙例外

当自承载通过 HTTP 通信的 WCF 服务时,必须向防火墙配置添加例外,以允许使用特定 URL 的入站连接。

配置 SSL 证书

安全套接字层 (SSL) 协议使用客户端和服务器上的证书来存储加密密钥。 服务器在建立连接时提供其 SSL 证书,以便客户端可以验证服务器身份。 服务器还可以从客户端请求证书,以提供连接双方的相互身份验证。

证书根据连接的 IP 地址和端口号存储在集中存储中。 特殊 IP 地址 0.0.0.0 与本地计算机的任何 IP 地址匹配。 请注意,证书存储不会根据路径区分 URL。 具有相同 IP 地址和端口组合的服务必须共享证书,即使服务的 URL 中的路径不同也是如此。

有关分步说明,请参阅 如何:使用 SSL 证书配置端口

配置 IP 侦听列表

HTTP 服务器 API 仅在用户注册 URL 后绑定到 IP 地址和端口。 默认情况下,HTTP 服务器 API 绑定到计算机所有 IP 地址的 URL 中的端口。 如果不使用 HTTP 服务器 API 的应用程序之前已绑定到 IP 地址和端口的组合,则会发生冲突。 IP 侦听列表允许 WCF 服务与使用计算机某些 IP 地址端口的应用程序共存。 如果 IP 侦听列表包含任何条目,则 HTTP 服务器 API 仅绑定到列表指定的 IP 地址。 修改 IP 侦听列表需要管理权限。

使用 netsh 工具修改 IP 侦听列表,如以下示例所示:

netsh http add iplisten ipaddress=0.0.0.0:8000

其他配置设置

使用 WSDualHttpBinding时,客户端连接使用与命名空间预留和 Windows 防火墙兼容的默认值。 如果您选择自定义双连接的客户端基本地址,则还必须在客户端上配置这些 HTTP 设置以匹配新地址。

HTTP 服务器 API 具有一些高级配置设置,这些设置无法通过 HttpCfg 获得。 这些设置在注册表中维护,并应用于在使用 HTTP Server API 的系统上运行的所有应用程序。 有关这些设置的信息,请参阅 IIS 的Http.sys 注册表设置。 大多数用户不需要更改这些设置。

另请参阅