碰到这个问题已经很久了 也困扰了我很久了,拿出来希望哪位高手能否帮忙解决一下 这个问题是这样的 WCF服务的代码都是一样的 就是UI层选择不一样而已 一个以Console程序来实现 而另外一个是WPF程序 以下是Console程序的代码
1 using System; 2 using System.ServiceModel; 3 4 namespace ConsoleHost 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 {10 using (ServiceHost host=new ServiceHost(typeof(ConsoleHost.StockService)))11 {12 host.Open();13 Console.WriteLine("启动了WCF服务器");14 Console.ReadLine();15 }16 }17 }18} WPF实现时的代码是 1 using System.ServiceModel; 2 using System.Windows; 3 4 namespace JLGuo.UI 5 { 6 /**//// <summary> 7 /// HostWindow.xaml 的交互逻辑 8 /// </summary> 9 public partial class HostWindow : Window10 {11 private ServiceHost host;12 public HostWindow()13 {14 InitializeComponent();15 }1617 private void btnStart_Click(object sender, RoutedEventArgs e)18 {19 using (host = new ServiceHost(typeof(JLGuo.Services.StockService)))20 {21 host.Open();22 if (host.State == CommunicationState.Opened)23 btnCancel.IsEnabled = true;24 }25 }2627 private void btnCancel_Click(object sender, RoutedEventArgs e)28 {29 if (host!=null)30 host.Close();31 this.Close();32 }33 }34} 都显示host已经启动成功了(app.config的配置都是类似的,也都开启了MEX) 但是Console程序使用netstat -a命令查看就可以看到其监听端口已经在监听了(比如8733) 而WPF程序使用netstat -a命令查看无法查看到要求的监听端口 (当然意味着使用添加服务引用时就算输入正确的服务器端address也没办法查找得到服务) 不知道大家有人碰到过嘛?一起解决一下 我的解决方案:(添加于2008-04-27日16:26) 只需要将WPF程序的下面代码 1 using (host = new ServiceHost( typeof (JLGuo.Services.StockService))) 2 {3} 换成 host = new ServiceHost( typeof (JLGuo.Services.StockService)); 而Console程序不需要改动 具体深层的原因不明。。。 很诡异的一个问题 不知是不是一个bug??转载于:https://www.cnblogs.com/ibillguo/archive/2008/04/27/1172829.html