private ServiceCommandOutput <object> CheckServiceConnectivity(string port, ServiceType type, ServiceSecurityMode mode) { var service = new WcfService <ICommandService <object>, DummyNativeCommandService>("localhost", ServiceName); service.AddBinding(BindingFactory.Create(new BindingConfiguration { Port = port, ServiceType = type })); if (mode == ServiceSecurityMode.BasicSSL) { var serviceSecurity = new ServiceSecurity { SecurityMode = ServiceSecurityMode.BasicSSL, CertificateConfiguration = _certificateConfiguration }; service.SetSecured(serviceSecurity); } service.Host(); var client = WcfClient <ICommandService <object> > .Create(type, "localhost", port, ServiceName, "api", mode); var output = client.Contract.ExecuteCommand("test", "token"); service.Stop(); return(output); }
private static IChannelFactory <TService> CreateChannelFactory <TService>(Uri uri) where TService : class { var binding = (NetTcpBinding)CreateDefaultEndpointBinding(uri); var securityMode = ServiceSecurityMode.GetSecurityModeFromConfig(); binding.SetBindingSecurity(securityMode); binding.MaxBufferSize = 2147483647; binding.MaxReceivedMessageSize = 65536; binding.CloseTimeout = new TimeSpan(0, 5, 0); //updated service RecieveTimeout to 3 minutes instead of default binding.ReceiveTimeout = TimeSpan.FromMinutes(3); #if DEBUG binding.SendTimeout = TimeSpan.MaxValue; binding.OpenTimeout = TimeSpan.MaxValue; binding.ReceiveTimeout = TimeSpan.MaxValue; binding.CloseTimeout = TimeSpan.MaxValue; #endif binding.EnableTransactionFlowAndReliableMessaging(); var serviceUriBuilder = new UriBuilder(uri); serviceUriBuilder.Path = string.Format("{0}/{1}", serviceUriBuilder.Path, securityMode.PathExtension); var address = CreateEndpointAddress(serviceUriBuilder.Uri, null); var cf = new ChannelFactory <TService>(binding, address); cf.AddGenericResolver(); cf.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None; var certMode = securityMode as X509CertificateServiceSecurityMode; if (certMode != null) { cf.Credentials.ClientCertificate.Certificate = certMode.TransportCertificate; } return(cf); }
public static WcfClient <T> Create(ServiceType type, string serverName, string port, string serviceName, string folder = "api", ServiceSecurityMode mode = ServiceSecurityMode.None) { var address = new AddressInfo(type, serverName, port, serviceName, folder, mode); return(new WcfClient <T>(address)); }
public void TestRESTSecured() { const string port = "6661"; const ServiceType type = ServiceType.REST; const ServiceSecurityMode mode = ServiceSecurityMode.BasicSSL; var output = CheckServiceConnectivityJson(port, type, mode); Assert.IsNotNull(output); Assert.IsNotNull(output.DisplayMessage); }
public void TestTCP() { const string port = "6050"; const ServiceType type = ServiceType.TCP; const ServiceSecurityMode mode = ServiceSecurityMode.None; var output = CheckServiceConnectivity(port, type, mode); Assert.IsNotNull(output); Assert.IsNotNull(output.DisplayMessage); }
public void TestBasicHttpPlusSecured() { const string port = "6671"; const ServiceType type = ServiceType.WSHTTP; const ServiceSecurityMode mode = ServiceSecurityMode.BasicSSL; var output = CheckServiceConnectivity(port, type, mode); Assert.IsNotNull(output); Assert.IsNotNull(output.DisplayMessage); }
public AddressInfo(ServiceType type, string serverName, string port, string serviceName, string folder, ServiceSecurityMode mode) { if (string.IsNullOrEmpty(serverName) || string.IsNullOrEmpty(port) || string.IsNullOrEmpty(serverName) || string.IsNullOrEmpty(folder)) { throw new ArgumentException("One or more arguments are either NULL or empty."); } Type = type; ServerName = serverName; Port = port; ServiceName = serviceName; SecurityMode = mode; }
public static void SetBindingSecurity(this Binding binding, ServiceSecurityMode serviceSecurityMode) { if (serviceSecurityMode is NoneServiceSecurityMode) { SetBindingSecurityForNone(binding); } else if (serviceSecurityMode is WindowsServiceSecurityMode) { SetBindingSecurityForWindows(binding); } else if (serviceSecurityMode is X509CertificateServiceSecurityMode) { SetBindingSecurityForCertificate(binding); } else { throw new ArgumentOutOfRangeException("serviceSecurityMode", serviceSecurityMode, null); } }
protected AbstractStartableServiceHost(Uri[] baseAddresses) : base(baseAddresses) { Logger = LogManager.GetLogger(GetType().Name); serviceSecurityModes = ServiceSecurityMode.GetSecurityModesFromConfig(); }
public static ServiceEndpoint[] AddServiceEndpoints <T>(this ServiceHost <T> host, ServiceSecurityMode securityMode, EndpointIdentity identity = null) { if (host.State == CommunicationState.Opened) { throw new InvalidOperationException("Host is already opened"); } var endpointsCreated = new List <ServiceEndpoint>(); var serviceInterfaces = typeof(T).GetInterfaces().Where(i => i.GetCustomAttributes(typeof(ServiceContractAttribute), true).Any()); foreach (var serviceInterface in serviceInterfaces) { foreach (var baseAddress in host.BaseAddresses) { var uriBuilder = new UriBuilder(baseAddress); uriBuilder.Path = string.Format("{0}/{1}", uriBuilder.Path, securityMode.PathExtension); var serviceUri = uriBuilder.Uri; var binding = CreateBindingForUri(baseAddress); binding.SetBindingSecurity(securityMode); var ep = host.AddServiceEndpoint(serviceInterface, binding, string.Empty); ep.Address = identity == null ? new EndpointAddress(serviceUri) : new EndpointAddress(serviceUri, EndpointIdentity.CreateIdentity(identity.IdentityClaim)); endpointsCreated.Add(ep); } } return(endpointsCreated.ToArray()); }
private ServiceCommandOutput<object> CheckServiceConnectivity(string port, ServiceType type, ServiceSecurityMode mode) { var service = new WcfService<ICommandService<object>, DummyNativeCommandService>("localhost", ServiceName); service.AddBinding(BindingFactory.Create(new BindingConfiguration {Port = port, ServiceType = type})); if (mode == ServiceSecurityMode.BasicSSL) { var serviceSecurity = new ServiceSecurity { SecurityMode = ServiceSecurityMode.BasicSSL, CertificateConfiguration = _certificateConfiguration }; service.SetSecured(serviceSecurity); } service.Host(); var client = WcfClient<ICommandService<object>>.Create(type, "localhost", port, ServiceName, "api", mode); var output = client.Contract.ExecuteCommand("test", "token"); service.Stop(); return output; }