Beispiel #1
0
 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;
         }
     }
 }
Beispiel #2
0
        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;
                    //}
                    //}
                }
            }
        }