ServiceHost selfHost = new ServiceHost(typeof(MyService));
if (selfHost.State != CommunicationState.Opening)
{ selfHost.Open(); }
selfHost.Opened += delegate
{
   Console.WriteLine("MyService已经启动,按任意键终止服务!");
};
Console.ReadKey(true);
selfHost.Close();

解决方案 »

  1.   

    必须保留这两行代码,里面的参数配置自动去读取配置文件,不用指定监听地址等信息。
    ServiceHost selfHost = new ServiceHost(typeof(MyService));
    selfHost.Open();//⑤启动服务
      

  2.   

    哦,我把寄宿程序改成了下面这样的:class Program
        {
            static void Main(string[] args)
            {            
                using (ServiceHost host = new ServiceHost(typeof(MyService)))
                    {                
                        host.Opened += delegate
                        {
                           Console.WriteLine("IService服务已经启动,按任意键终止服务!");
                        };    
                       host.Open();
                       Console.Read();
                   }
                }
            }
        }
    然后重新生成,更新客户端的服务引用。并启动寄宿程序,运行客户端的时候,出现以下异常:请问,这又是哪里出错了呢?
      

  3.   

    你应该访问基地址:http://localhost:8000,没有后面的MyService,<serviceMetadata httpGetEnabled="True"/>的设置必须要有基地址的存在,就是这个道理,它通过基地址去部署的帮助页面,和你设置的那个endpoint(终结点地址)无关。
      

  4.   

    另外你代码设置地址时,baseAddress(基地址)用的就是http://localhost:8000/MyService,但是配置文件里面的基地址却是http://localhost:8000,两者不一样,你代码里没有设置终结点的相对地址,但配置文件里设置了相对地址,所以最终的终结点地址一样。