private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node != null) { WcfConfigInfo wcfInfo = e.Node.Tag as WcfConfigInfo; if (wcfInfo != null) { rcbAddress.Text = wcfInfo.EnpointBindUrl; } } }
private void btnStartService_Click(object sender, EventArgs e) { List <TreeNode> treeNodes = GetAllCheckNodes(treeView1); if (treeNodes.Count == 0) { MessageBox.Show(@"请选择要启动的服务!"); return; } if (rcbState.Text.Trim() != string.Empty) { if (rcbState.Text.Contains("启动成功")) { MessageBox.Show(@"服务已经在开启中了!"); return; } } rcbState.Text = string.Empty; foreach (var item in treeNodes) { WcfConfigInfo wcfConfig = item.Tag as WcfConfigInfo; if (wcfConfig != null) { Type typeClassName = Assembly.LoadFrom(wcfConfig.WcfServiceNameSpace + ".dll").GetType(wcfConfig.WcfServiceNameSpace + "." + wcfConfig.WcfServiceClassName, true, true); ServiceHost host = new ServiceHost(typeClassName, new Uri(wcfConfig.EnpointBindUrl)); Type typeInterfaceName = Assembly.LoadFrom(wcfConfig.WcfServiceNameSpace + ".dll").GetType(wcfConfig.WcfServiceNameSpace + "." + wcfConfig.WcfServiceInterfaceName, true, true); if (wcfConfig.WcfServiceClassName != null) { if (wcfConfig.WcfType == "TCP") { host.AddServiceEndpoint(typeInterfaceName, new NetTcpBinding() { PortSharingEnabled = true }, wcfConfig.WcfServiceClassName); } else if (wcfConfig.WcfType == "Duplex") { ServiceEndpoint endpoint = host.AddServiceEndpoint(typeInterfaceName, new WSDualHttpBinding() { ClientBaseAddress = new Uri(wcfConfig.EnpointBindUrl) }, wcfConfig.WcfServiceClassName); endpoint.Name = "SendServiceWcf"; ServiceMetadataBehavior behavior = new ServiceMetadataBehavior { HttpGetEnabled = true }; host.Description.Behaviors.Add(behavior); } } //公布元数据 //_host.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = true }); //_host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex"); host.Open(); _lstServiceHost.Add(host); //foreach (var channelDispatcherBase in host.ChannelDispatchers) //{ //foreach (var ed in cd.Endpoints) //{ rcbState.Text += (@"[" + wcfConfig.WcfServiceName + @"]" + @"启动成功," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) + Environment.NewLine; //} //} } } }