如何:承载和运行基本的 Windows Communication Foundation 服务

这是创建基本 Windows Communication Foundation (WCF) 服务和可以调用该服务的客户端所需的六项任务中的第三项任务。有关全部六项任务的概述,请参见入门教程主题。

本主题描述如何运行基本的 Windows Communication Foundation (WCF) 服务。此过程包含以下步骤:

  • 为服务创建基址。
  • 为服务创建服务主机。
  • 启用元数据交换。
  • 打开服务主机。

在过程后面的以下示例中提供了在此任务中编写的代码的完整清单。将下面的代码添加到 Program 类中定义的 Main() 方法。此类是在您创建 Service 解决方案时生成的。

为服务配置基址

  1. 为服务的基址创建 Uri 实例。此 URI 指定 HTTP 方案、本地计算机、端口号 8000,以及服务协定中为服务命名空间指定的服务路径 ServiceModelSample/Service

承载服务

  1. 导入 System.ServiceModel.Description 命名空间。这行代码应该与 usingimports 语句的其余部分一起放置在 Program.cs/Program.vb 文件的顶部。

  2. 创建一个新的 ServiceHost 实例以承载服务。必须指定实现服务协定和基址的类型。对于此示例,基址为 https://localhost:8000/ServiceModelSamples/ServiceCalculatorService 为实现服务协定的类型。

  3. 添加一个捕获 CommunicationExceptiontry-catch 语句,并在接下来的三个步骤中将该代码添加到 try 块中。catch 子句应该显示错误信息,然后调用 selfHost.Abort()

  4. 添加公开服务的终结点。为此,必须指定终结点公开的协议、绑定和终结点的地址。对于此示例,将 ICalculator 指定为协定,将 WSHttpBinding 指定为绑定,并将 CalculatorService 指定为地址。在这里请注意,终结点地址是相对地址。终结点的完整地址是基址和终结点地址的组合。在此例中,完整地址是 https://localhost:8000/ServiceModelSamples/Service/CalculatorService

  5. 启用元数据交换。为此,添加服务元数据行为。首先创建一个 ServiceMetadataBehavior 实例,将 HttpGetEnabled 属性设置为 true,然后为服务添加新行为。有关 发布元数据时出现的安全问题的更多信息,请参见元数据的安全注意事项

  6. 打开 ServiceHost 并等待传入消息。用户按 Enter 键时,关闭 ServiceHost

验证服务是否正常运行

  1. 从 Visual Studio 内部运行 service.exe。在 Windows Vista 上运行时,必须使用管理员特权运行服务。由于 Visual Studio 是使用管理员特权运行的,因此 service.exe 也是使用管理员特权运行的。也可以启动新的命令提示,使用管理员特权运行它,并在其中运行 service.exe。

  2. 打开 Internet Explorer,并浏览到服务的调试页(网址为 https://localhost:8000/ServiceModelSamples/Service)。

示例

下面的示例包括本教程中前面步骤的服务协定和实现,并将服务承载于控制台应用程序中。将以下内容编译为可执行文件 Service.exe。

在编译代码时,务必引用 System.ServiceModel.dll

提示

此类服务需要在计算机上注册 HTTP 地址以进行侦听的权限。管理员帐户具有此权限,但必须授予非管理员帐户对 HTTP 命名空间的权限。有关 如何配置命名空间保留的更多信息,请参见配置 HTTP 和 HTTPS。在 Visual Studio 下运行时,必须使用管理员特权运行 service.exe。

此时服务正在运行。继续执行如何:创建 Windows Communication Foundation 客户端中的步骤。有关疑难解答信息,请参见入门教程疑难解答

另请参见

其他资源

Getting Started Sample
Self-Host