自承载

SelfHost 示例演示如何在控制台应用程序中实现自承载服务。 此示例基于入门指南。 服务配置文件已从 Web.config 重命名为 App.config,并修改为配置一个由主机使用的基址。 服务源代码已修改为实现一个静态 Main 函数,该函数创建并打开一个提供已配置的基址的服务主机。 服务实现已修改为将每个操作的输出写入控制台。 客户端未经修改,只是配置了服务的正确终结点地址。

备注

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

此示例实现一个静态主函数,以便为给定的 ServiceHost 类型创建一个 CalculatorService,如下面的示例代码所示。

// Host the service within this EXE console application.
public static void Main()
{
    // Create a ServiceHost for the CalculatorService type.
    using (ServiceHost serviceHost =
           new ServiceHost(typeof(CalculatorService)))
    {
        // Open the ServiceHost to create listeners
        // and start listening for messages.
        serviceHost.Open();

        // The service can now be accessed.
        Console.WriteLine("The service is ready.");
        Console.WriteLine("Press <ENTER> to terminate service.");
        Console.WriteLine();
        Console.ReadLine();
    }
}

当服务承载在 Internet 信息服务 (IIS) 或 Windows 进程激活服务 (WAS) 中时,服务的基址由宿主环境提供。 在自承载情况下,您必须亲自指定基址。 这是使用 add 元素、<baseAddresses> 的子元素、<host> 的子元素和 <service> 的子元素完成的,如以下示例配置所示。

<service
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
  <host>
    <baseAddresses>
      <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
    </baseAddresses>
  </host>
  ...
</service>

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

设置、生成和运行示例

  1. 请确保已执行 Windows Communication Foundation 示例的一次性安装过程

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

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

另请参阅