WCF 4.5 中的新增功能?IIS 的自动 HTTPS 终结点






4.50/5 (2投票s)
这是 WCF 4.5 系列的第六篇文章。
这是 WCF 4.5 系列的第六篇文章。 在上一篇文章中,我们讨论了在 IIS 中托管的服务的新的身份验证功能,而这篇文章继续介绍新的 IIS 托管功能列表 - IIS 中的自动 HTTPS 终结点。
之前的文章
- WCF 4.5 有什么新内容?让我们从 WCF 配置开始
- WCF 4.5 有什么新内容?单个 WSDL 文件
- WCF 4.5 有什么新内容?配置文件中的工具提示和智能感知
- WCF 4.5 有什么新内容?配置验证
- WCF 4.5 有什么新内容?IIS 中单个端点支持多种身份验证
那么什么是自动 HTTPS 终结点功能? WCF 4 引入了默认终结点功能,该功能使服务宿主能够在未为服务指定任何终结点的情况下自动创建默认终结点。 默认终结点是根据基本地址方案(HTTP、TCP…)和匹配的绑定之间的映射,为每个服务宿主的基本地址创建的。 例如,如果您有一个 HTTP 基本地址,您将获得一个使用 BasicHttp
绑定的终结点。
那么 WCF 4.5 中的新功能是什么? 我们现在获得了 HTTPS 的另一个方案映射,因此如果您的 IIS 启用了 SSL,并且您没有为服务指定任何特定的终结点,您将同时获得 HTTP 和 HTTPS 终结点。 HTTPS 方案的默认绑定与 HTTP 方案相同 - BasicHttp
绑定。
如何启用此功能?
- 在您的 IIS 中设置 SSL;在 IIS.NET 网站上有一个很棒的教程。
- 创建 WCF 服务并将其托管在 Web 应用程序中。
- 将 Web 应用程序设置为在 IIS 中托管。
- 验证服务是否没有任何终结点配置,以便它将使用默认终结点。
就是这样!
如果您现在浏览到服务的 WSDL 文件,您会注意到您获得了两个默认终结点 - HTTP 和 HTTPS
看到什么奇怪的东西了吗? 您是对的! 出于某种原因,这两个终结点在地址中使用不同的机器名称。
自 WCF 4 以来,在 IIS 中托管的服务会自动使用 useRequestHeadersForMetadataAddress 行为,该行为根据 WSDL GET
请求中使用的主机名构造终结点主机名。 此行为尤其对于 Web 场是必需的,在 Web 场中,客户端会看到特殊的主机名而不是机器名称本身,但如您所见,自动 HTTPS 终结点出于某种原因确实使用机器名称,当 IIS 服务器是 Web 场的一部分时,这可能会有点问题。
如果在 IIS 中设置了 SSL,但您对拥有 HTTPS 终结点不感兴趣,您可以通过删除 HTTPS 方案映射来删除它,如下面的 XML 配置所示
<system.serviceModel>
<protocolMapping>
<remove scheme="https"/>
</protocolMapping>
. . .
</system.serviceModel>
如果您需要 HTTPS 终结点,那么这个新功能非常有用,因为在此功能之前,如果我们需要 HTTPS 终结点,我们就无法使用默认终结点,并且必须手动声明所有终结点,包括 HTTP 和 HTTPS。 这是使配置文件更小的又一步。
不幸的是,目前存在主机名错误,我希望在新框架发布时能够解决。
敬请期待更多关于 WCF 4.5 新特性的文章。你也可以在 Twitter 上关注我 (@IdoFlatow),以便在发布新文章时获得更新。
.NET 4.5 的 RTM 仍未到来,我假设你们中的许多人仍在适应 WCF 4。 如果您想了解更多关于 WCF 4 的新功能,请参加我在 Redmond (10 月 17 日至 21 日) 举办的 Visual Studio Live! 2011 上的会议。
此外,如果你是 MCT 并且居住在美国,请参加我在旧金山举行的MCT 2011 北美峰会(10 月 19 日至 21 日)关于 WCF 4 的会议。