public void StartService(string bindingType, int port, string relativePath) { relativePath = relativePath.TrimStart('/'); if (_wcfService_SelfHosted != null) { StopService(); } WCFLibraryHelpers.StartAgentWithExternalCall(); var bindingTypeEnum = (WCFBindingType)Enum.Parse(typeof(WCFBindingType), bindingType, true); var baseAddress = WCFLibraryHelpers.GetEndpointAddress(bindingTypeEnum, port, relativePath); Logger.Info($"Starting WCF Service using {bindingTypeEnum} binding at endpoint {baseAddress}"); _wcfService_SelfHosted = new ServiceHost(typeof(WcfService), baseAddress); if (bindingTypeEnum != WCFBindingType.NetTcp) { var smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15; _wcfService_SelfHosted.Description.Behaviors.Add(smb); } switch (bindingTypeEnum) { case WCFBindingType.BasicHttp: _wcfService_SelfHosted.AddServiceEndpoint(typeof(IWcfService), new BasicHttpBinding(), baseAddress); break; case WCFBindingType.WebHttp: var endpoint = _wcfService_SelfHosted.AddServiceEndpoint(typeof(IWcfService), new WebHttpBinding(), baseAddress); var behavior = new WebHttpBehavior(); endpoint.EndpointBehaviors.Add(behavior); break; case WCFBindingType.WSHttp: _wcfService_SelfHosted.AddServiceEndpoint(typeof(IWcfService), new WSHttpBinding(), baseAddress); break; case WCFBindingType.NetTcp: _wcfService_SelfHosted.AddServiceEndpoint(typeof(IWcfService), new NetTcpBinding(), baseAddress); break; case WCFBindingType.Custom: _wcfService_SelfHosted.AddServiceEndpoint(typeof(IWcfService), WCFLibraryHelpers.GetCustomBinding(), baseAddress); break; case WCFBindingType.CustomClass: _wcfService_SelfHosted.AddServiceEndpoint(typeof(IWcfService), WCFLibraryHelpers.GetCustomBinding("CustomWcfBinding"), baseAddress); break; default: throw new NotImplementedException($"Binding Type {bindingTypeEnum}"); } _wcfService_SelfHosted.Open(); }
private void InitializeClient(string bindingType, int port, string relativePath) { relativePath = relativePath.TrimStart('/'); var bindingTypeEnum = (WCFBindingType)Enum.Parse(typeof(WCFBindingType), bindingType); var endpointAddress = WCFLibraryHelpers.GetEndpointAddress(bindingTypeEnum, port, relativePath); switch (bindingTypeEnum) { case WCFBindingType.BasicHttp: _wcfClient = CreateClientWithHttpBinding(endpointAddress); break; case WCFBindingType.WSHttp: _wcfClient = CreateClientWithWSHttpBinding(endpointAddress); break; case WCFBindingType.WebHttp: _wcfClient = CreateClientWithWebHttpBinding(endpointAddress); break; case WCFBindingType.NetTcp: _wcfClient = CreateClientWithNetTCPBinding(endpointAddress); break; case WCFBindingType.Custom: _wcfClient = CreateClientWithCustomBinding(endpointAddress); break; case WCFBindingType.CustomClass: _wcfClient = CreateClientWithCustomBinding(endpointAddress, "CustomWcfBinding"); break; default: throw new NotImplementedException($"Binding Type {bindingTypeEnum}"); } }