/// <summary> /// 处理当前主机节点,将当前节点做为服务HOST启动 /// </summary> /// <param name="node">当前主机节点</param> private void ProcessNode(NetNode node) { if (node.Info != null && !string.IsNullOrEmpty(node.Info.Url)) { ServiceHost host = new ServiceHost(typeof(SyncService)); //if (host.State == CommunicationState.Created) //{ // _logger.Info(string.Format("主机节点{0}已启动", node.Info.Url)); // return; //} NetTcpBinding binding = new NetTcpBinding("SyncBinding"); host.AddServiceEndpoint(typeof(ISyncService), binding, node.Info.Url); ContractDescription cd = host.Description.Endpoints[0].Contract; OperationDescription myOperationDescription = cd.Operations.Find("Excute"); DataContractSerializerOperationBehavior serializerBehavior = myOperationDescription.Behaviors.Find <DataContractSerializerOperationBehavior>(); if (serializerBehavior == null) { serializerBehavior = new DataContractSerializerOperationBehavior(myOperationDescription); myOperationDescription.Behaviors.Add(serializerBehavior); } serializerBehavior.MaxItemsInObjectGraph = 1000000000; ServiceDebugBehavior behavior = host.Description.Behaviors.Find <ServiceDebugBehavior>(); if (behavior == null) { behavior = new ServiceDebugBehavior(); host.Description.Behaviors.Add(behavior); } behavior.IncludeExceptionDetailInFaults = true; host.Opened += (obj, e) => { _logger.Info(string.Format("主机节点{0}已启动", node.Info.Url)); }; host.Open(); } else { _logger.Error("没有找到可用于启动的主机节点"); } }
/// <summary> /// 处理当前主机节点,将当前节点做为服务HOST启动 /// </summary> /// <param name="node">当前主机节点</param> private void ProcessNode(NetNode node) { if (node.Info != null && !string.IsNullOrEmpty(node.Info.Url)) { ServiceHost host = new ServiceHost(typeof(SyncService)); //if (host.State == CommunicationState.Created) //{ // _logger.Info(string.Format("主机节点{0}已启动", node.Info.Url)); // return; //} NetTcpBinding binding = new NetTcpBinding("SyncBinding"); host.AddServiceEndpoint(typeof(ISyncService), binding, node.Info.Url); ContractDescription cd = host.Description.Endpoints[0].Contract; OperationDescription myOperationDescription = cd.Operations.Find("Excute"); DataContractSerializerOperationBehavior serializerBehavior = myOperationDescription.Behaviors.Find<DataContractSerializerOperationBehavior>(); if (serializerBehavior == null) { serializerBehavior = new DataContractSerializerOperationBehavior(myOperationDescription); myOperationDescription.Behaviors.Add(serializerBehavior); } serializerBehavior.MaxItemsInObjectGraph = 1000000000; ServiceDebugBehavior behavior = host.Description.Behaviors.Find<ServiceDebugBehavior>(); if (behavior == null) { behavior = new ServiceDebugBehavior(); host.Description.Behaviors.Add(behavior); } behavior.IncludeExceptionDetailInFaults = true; host.Opened += (obj, e) => { _logger.Info(string.Format("主机节点{0}已启动", node.Info.Url)); }; host.Open(); } else { _logger.Error("没有找到可用于启动的主机节点"); } }
/// <summary> /// 刷新主机节点 /// </summary> public void LoadNetNode() { _node = ParseNode(); }