表象是连不上服务端,本质原因多种多样,网络硬件问题导致的网络不通、服务本身问题或没有启动、或者防火墙阻隔等等不一而足。
1.ping看服务端能否ping通;
2.telnet ip地址 端口 ,看看是否通;
此时如果端口通,看看与此端口绑定的服务是不是你需要的WCF服务,命令netstat -ano看,最后一列代表进程ID
如果不通,说明服务未成功启动
3.服务未启动原因有多种,最直接的方法是用windbg在服务器上查看host对象是否存活,如果host对象在内存中不存在,需要跟踪堆栈看哪一步退出了
4.微软提供了一套使用windows服务来驻留WCF,此时不要被表象所迷惑,提供服务的仍然是host,此时也可以用windbg看服务对应的程序,attach后看host对象是否存活
5.如果所有的方式试完仍然在不到解决方案,建议使用最原始的方法调试看看,有时候以为配置不全的问题内部爆了异常没有捕捉,手动调试不失为一个直观的办法:
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(YourBusinessService)))
{ host.Open();
Console.WriteLine("任意键退出...");
Console.ReadKey();
}
}