使用传输安全的 BasicBinding

TransportSecurity 示例演示对基本绑定使用 SSL 传输安全。 此示例基于实现计算器服务的入门

示例详细信息

默认情况下,基本绑定支持 HTTP 通信。 本示例演示如何为基本绑定启用传输安全。 在运行此示例之前,必须通过使用 Web 服务器证书向导来创建证书并分配此证书。

备注

本主题的最后介绍了此示例的设置过程和生成说明。

此示例中的程序代码与入门服务的程序代码完全相同。 配置文件设置中的终结点定义和绑定定义已进行修改,可以启用安全通信,如下面的示例配置所示。

<system.serviceModel>
  <services>
    <service type="Microsoft.ServiceModel.Samples.CalculatorService"
             behaviorConfiguration="CalculatorServiceBehavior">
      <endpoint address=""
                binding="basicHttpBinding"
                bindingConfiguration="Binding1"
                contract="Microsoft.ServiceModel.Samples.ICalculator" />
    </service>
   </services>
  <bindings>
    <basicHttpBinding>
      <!-- Configure basicHttpBinding with Transport security -->
      <!-- mode and clientCredentialType set to None. -->
      <binding name="Binding1">
        <security mode="Transport">
          <transport clientCredentialType="None"/>
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
</system.serviceModel>

因为此示例中使用的证书是用 Makecert.exe 创建的测试证书,所以当你尝试从浏览器中访问 HTTPS: 地址(例如 https://localhost/servicemodelsamples/service.svc)时,将出现安全警报。 为了允许 Windows Communication Foundation (WCF) 客户端使用测试证书,已向客户端添加一些附加代码,以禁用安全警报。 使用真正的证书时不需要此代码和附带的类。

// This code is required only for test certificates such as those
// created by Makecert.exe.
PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server");

运行示例时,操作请求和响应将显示在客户端控制台窗口中。 在客户端窗口中按 Enter 可以关闭客户端。

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

设置、生成和运行示例

  1. 使用以下命令安装 ASP.NET 4.0:

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. 请确保已执行 Windows Communication Foundation 示例的一次性安装过程

  3. 请确保已执行 Internet Information Services (IIS) 服务器证书安装说明

  4. 若要生成 C# 或 Visual Basic .NET 版本的解决方案,请按照 Building the Windows Communication Foundation Samples中的说明进行操作。

  5. 要使用单机配置或跨计算机配置来运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。