教程:承载和运行基本的WindowsCommunicationFounda

极速动力8个月前帮助109

本文内容

本教程介绍创建基本(WCF)应用程序所要完成的五个任务中的第三个任务。有关教程概述,请参阅教程:应用程序入门。

创建WCF应用程序所要完成的下一个任务是在控制台应用程序中承载一个WCF服务。WCF服务公开一个或多个终结点,其中的每位终结点公开一项或多项服务操作。服务终结点指定以下信息:

本教程介绍怎样执行下述操作:

创建并配置用于承载服务的控制台应用项目

在中创建一个控制台应用项目:

在“文件”菜单中,选择“打开”>“项目/解决方案”,之后浏览到当初创建的解决方案(.sln)。选择“打开”。

从“视图”菜单中选择“解决方案资源管理器”。

在“解决方案资源管理器”窗口中,选择“”解决方案(底部节点),之后从快捷菜单中选择“添加”>“新建项目”。

在右侧的“添加新项目”窗口中,选择“C#”或“Basic”下的“桌面”类别。

选择“控制台应用(.NET)”模板,之后输入“”作为名称。选择“确定”。

将“”项目中的引用添加到“”项目:

在“解决方案资源管理器”窗口中,选择“”项目下的“”文件夹,之后从快捷菜单中选择“添加引用”。

在“添加引用”对话框中,在窗口右侧的“项目”下选择“解决方案”。

在窗口的中间部份选择“”,之后选择“确定”。

此操作将使“”项目中定义的类型可用于“”项目。

将“”项目中的引用添加到.程序集:

在“解决方案资源管理器”窗口中,选择“”项目下的“”文件夹,之后从快捷菜单中选择“添加引用”。

在“添加引用”窗口中右侧的“程序集”下,选择“框架”。

依次选择“.”、“确定”。

选择“文件”>“全部保存”以保存解决方案。

添加代码以承载服务

若要承载服务,请添加代码以执行以下步骤:

为基址创建一个URI。创建一个用于承载服务的类实例。创建服务终结点。启用元数据交换。打开服务主机以侦听传入的消息。

对代码进行以下修改:

打开“”项目中的“.cs”或“.vb”文件,将其代码替换为以下代码:

using System;
using System.ServiceModel;
using System.ServiceModel.Description;
using GettingStartedLib;
namespace GettingStartedHost
{
    class Program
    {
        static void Main(string[] args)
        {
            // Step 1: Create a URI to serve as the base address.
            Uri baseAddress = new Uri("http://localhost:8000/GettingStarted/");
            // Step 2: Create a ServiceHost instance.
            ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);
            try
            {
                // Step 3: Add a service endpoint.
                selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");
                // Step 4: Enable metadata exchange.
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                selfHost.Description.Behaviors.Add(smb);
                // Step 5: Start the service.
                selfHost.Open();
                Console.WriteLine("The service is ready.");
                // Close the ServiceHost to stop the service.
                Console.WriteLine("Press  to terminate the service.");
                Console.WriteLine();
                Console.ReadLine();
                selfHost.Close();
            }
            catch (CommunicationException ce)
            {
                Console.WriteLine("An exception occurred: {0}", ce.Message);
                selfHost.Abort();
            }
        }
    }
}

Imports System.ServiceModel
Imports System.ServiceModel.Description
Imports GettingStartedLib.GettingStartedLib
Module Service
    Class Program
        Shared Sub Main()
            ' Step 1: Create a URI to serve as the base address.
            Dim baseAddress As New Uri("http://localhost:8000/GettingStarted/")
            ' Step 2: Create a ServiceHost instance.
            Dim selfHost As New ServiceHost(GetType(CalculatorService), baseAddress)
           Try
                ' Step 3: Add a service endpoint.
                selfHost.AddServiceEndpoint( _
                    GetType(ICalculator), _
                    New WSHttpBinding(), _
                    "CalculatorService")
                ' Step 4: Enable metadata exchange.
                Dim smb As New ServiceMetadataBehavior()
                smb.HttpGetEnabled = True
                selfHost.Description.Behaviors.Add(smb)
                ' Step 5: Start the service.
                selfHost.Open()
                Console.WriteLine("The service is ready.")
                ' Close the ServiceHost to stop the service.
                Console.WriteLine("Press  to terminate the service.")
                Console.WriteLine()
                Console.ReadLine()
                selfHost.Close()
            Catch ce As CommunicationException
                Console.WriteLine("An exception occurred: {0}", ce.Message)
                selfHost.Abort()
            End Try
        End Sub
    End Class
End Module

有关此代码的工作原理的信息,请参阅。

更新项目属性:

在“解决方案资源管理器”窗口中选择“”文件夹,之后从快捷菜单中选择“属性”。

在“”属性页上,选择“应用程序”选项卡:

在“文件”菜单中选择“全部保存”。

验证服务是否正常运行

生成解决方案,之后在中运行“”控制台应用程序。

必须以管理员特权运行该服务。因为是以管理员特权打开的,因而在中运行“”时,应用程序也将以管理员特权运行。或则,可以管理员身分打开一个新的命令提示符(从快捷菜单中选择“更多”>“以管理员身分运行”)并在其中运行“.exe”。

打开Web浏览器并通过:8000//浏览到服务的页面。

备注

这种服务须要拥有适当的权限,便于才能在计算机上注册HTTP地址以进行侦听。管理员账户具有此权限,但对于非管理员账户来说,必须授予对HTTP命名空间的权限。有关怎样配置命名空间预留的详尽信息,请参阅配置HTTP和HTTPS。

服务承载程序步骤

下边介绍了你添加的用于承载服务的代码中的步骤:

重要

添加WCF服务库时,假如你通过启动服务主机对其进行调试,将为你承载该库。为了防止冲突,可以制止承载WCF服务库。

在“解决方案资源管理器”中选择“”项目,之后从快捷菜单中选择“属性”。选择“WCF选项”,并取消选中“调试同一解决方案中的另一个项目时启动WCF服务主机”。

后续步骤

在本教程中,你了解了怎样执行以下操作:

请继续学习下一篇教程,了解怎样创建WCF顾客端。

教程:创建WCF顾客端

相关文章

抗投诉服务器:排队短、资源充足的地区

抗投诉服务器容量大于服务器数量,空闲资源丰富的地区,排队时间较短,人少的地区,排队时间较长。抗投诉服务器无严格意义上的排队,排队是由大量的发单员来实现的,发单员可以将当天的所有发单给备选服务器,如果达...