日期:2014-05-17  浏览次数:20747 次

WCF,请教一下终结点的地址问题?
最近在学习WCF,在网上看到一个示例,其中一段是用控制台应用程序来承载WCF服务的代码。如下:

class Program
{
    static void Main(string[] args)
    {
        //创建一个URI对象,用来保存服务的基址
        Uri baseAddress = new Uri("http://localhost:8000/MyService");
        //创建一个ServiceHost对象。也就是服务主机
        ServiceHost selfHost = new ServiceHost(typeof(MyService), baseAddress);
        try
        {
            //添加一个服务终结点
            selfHost.AddServiceEndpoint(typeof(IService), new WSHttpBinding(), "MyService");
            //启用元数据交换
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            selfHost.Description.Behaviors.Add(smb);
            //启动服务
            selfHost.Open();
            Console.WriteLine("服务已准备就绪");
            Console.WriteLine("按下回车键以终止服务");
            Console.WriteLine();
            Console.ReadLine();
            //关闭ServiceHostBase以关闭服务
            selfHost.Close();
        }
        catch (CommunicationException ce)
        {
            Console.WriteLine("异常:{0}", ce.Message);
            selfHost.Abort();
        }
    }
}


问题:
1:服务的基址和终结点地址有什么不一样的吗?
2:这里的终结点地址怎么是MyService呢?MyService是地址吗?

------解决方案--------------------
基地址用来指明相对地址的起始部分,如果后面定义终结点地址用的是绝对地址,那么基地址不设置也没关系,你这里是设置的相对地址,因此实际的终结点地址是基地址+相对地址后的地址