コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: ProxyFactory.cs プロジェクト: eraj2587/NSB7
        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);
        }
コード例 #3
0
ファイル: WcfClient.cs プロジェクト: ugurak/KonfDB
        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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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;
        }
コード例 #8
0
ファイル: ServiceHostEx.cs プロジェクト: eraj2587/NSB7
 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);
     }
 }
コード例 #9
0
 protected AbstractStartableServiceHost(Uri[] baseAddresses) : base(baseAddresses)
 {
     Logger = LogManager.GetLogger(GetType().Name);
     serviceSecurityModes = ServiceSecurityMode.GetSecurityModesFromConfig();
 }
コード例 #10
0
ファイル: ServiceHostEx.cs プロジェクト: eraj2587/NSB7
        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());
        }
コード例 #11
0
ファイル: ServiceTest.cs プロジェクト: punitganshani/KonfDB
        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;
        }