Exemplo n.º 1
0
        public static IEndpoint AddSecureWSHttpEndpoint(this IServiceHostConfigurator configurator, Type contract, HttpEndpointAddress address, Action <WSHttpBinding> configureBinding = null)
        {
            if (configurator is null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            if (contract is null)
            {
                throw new ArgumentNullException(nameof(contract));
            }

            if (address is null)
            {
                throw new ArgumentNullException(nameof(address));
            }

            var secureAddress = new HttpEndpointAddress {
                Host = address.Host, IsSecure = true, Path = address.Path, Port = address.Port
            };

            return(configurator.AddWSHttpEndpoint(contract, secureAddress, ConfigureBinding));

            void ConfigureBinding(WSHttpBinding binding)
            {
                binding.UseHttps();
                configureBinding?.Invoke(binding);
            }
        }
Exemplo n.º 2
0
        public void AddSecureWSHttpEndpoint_forwards_to_configurator(IServiceHostConfigurator configurator, Action <WSHttpBinding> testDelegate, string host, string path, int port)
        {
            var address = EndpointAddress.ForHttp(host, path, port, false);

            configurator.AddSecureWSHttpEndpoint(typeof(ITestService), address, testDelegate);

            Mock.Get(configurator).Verify(p => p.AddEndpoint <WSHttpBinding>(typeof(ITestService), It.Is <HttpEndpointAddress>(a => a.IsSecure && a.Host == host && a.Port == port && a.Path == path), It.IsAny <Action <WSHttpBinding> >()));
        }
Exemplo n.º 3
0
        public static void AddExecutionLogging(this IServiceHostConfigurator configurator)
        {
            if (configurator is null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            configurator.AddServiceBehavior(new ExecutionLoggingBehavior(configurator.LoggerFactory));
        }
Exemplo n.º 4
0
        public static void AddServiceBehavior(this IServiceHostConfigurator configurator, IServiceBehavior behavior)
        {
            if (configurator is null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            if (behavior is null)
            {
                throw new ArgumentNullException(nameof(behavior));
            }

            configurator.ServiceHostConfigurations.Add(host => host.Description.Behaviors.Add(behavior));
        }
Exemplo n.º 5
0
        public static void ConfigureService(this IServiceHostConfigurator configurator, Action <ServiceBehaviorAttribute> configureService)
        {
            if (configurator is null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            if (configureService is null)
            {
                throw new ArgumentNullException(nameof(configureService));
            }

            configurator.ServiceHostConfigurations.Add(host =>
            {
                var serviceBehavior = host.Description.Behaviors.Find <ServiceBehaviorAttribute>();
                configureService(serviceBehavior);
            });
        }
Exemplo n.º 6
0
 public static void AcceptAllIncomingRequests(this IServiceHostConfigurator configurator)
 {
     ConfigureService(configurator, svc => svc.AddressFilterMode = AddressFilterMode.Any);
 }
Exemplo n.º 7
0
 public static IEndpoint AddNamedPipeEndpoint(this IServiceHostConfigurator configurator, Type contract, NamedPipeEndpointAddress address, Action <NetNamedPipeBinding> configureBinding = null) => configurator.AddEndpoint(contract, address, configureBinding);
Exemplo n.º 8
0
 public static IEndpoint AddWSHttpEndpoint(this IServiceHostConfigurator configurator, Type contract, HttpEndpointAddress address, Action <WSHttpBinding> configureBinding = null) => configurator.AddEndpoint(contract, address, configureBinding);
Exemplo n.º 9
0
        public static void AddMetadataEndpoints(this IServiceHostConfigurator configurator, Action <ServiceMetadataBehavior> serviceMetadataBehaviorConfigurator = null, string endpointAddress = "mex")
        {
            if (configurator is null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            configurator.ServiceHostConfigurations.Add(host =>
            {
                var behavior = host.Description.Behaviors.Find <ServiceMetadataBehavior>();

                if (behavior == null)
                {
                    behavior = new ServiceMetadataBehavior();

                    host.Description.Behaviors.Add(behavior);
                }

                var hasSupportedEndpoint = false;

                if (TryFindEndpointByBinding <WSHttpBinding>(host, out var wsEndpoint))
                {
                    var address = new Uri($"{wsEndpoint.Address.Uri}/{endpointAddress}");

                    behavior.HttpGetEnabled = true;
                    behavior.HttpGetUrl     = address;

                    host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), address);

                    hasSupportedEndpoint = true;
                }

                if (TryFindEndpointByBinding <BasicHttpBinding>(host, out var httpEndpoint))
                {
                    var address = new Uri($"{httpEndpoint.Address.Uri}/{endpointAddress}");

                    behavior.HttpGetEnabled = true;
                    behavior.HttpGetUrl     = address;

                    host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, new BasicHttpBinding(), address);

                    hasSupportedEndpoint = true;
                }

                if (TryFindEndpointByBinding <NetNamedPipeBinding>(host, out var netNamedEndpoint))
                {
                    host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexNamedPipeBinding(), $"{netNamedEndpoint.Address.Uri}/{endpointAddress}");

                    hasSupportedEndpoint = true;
                }

                if (TryFindEndpointByBinding <NetTcpBinding>(host, out var netTcpEndpoint))
                {
                    host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexTcpBinding(), $"{netTcpEndpoint.Address.Uri}/{endpointAddress}");

                    hasSupportedEndpoint = true;
                }

                if (!hasSupportedEndpoint)
                {
                    throw new InvalidOperationException("No supported endpoint has been found.");
                }

                serviceMetadataBehaviorConfigurator?.Invoke(behavior);
            });
        }
Exemplo n.º 10
0
        public void AddNamedPipeEndpoint_forwards_to_configurator(IServiceHostConfigurator configurator, Action <NetNamedPipeBinding> testDelegate, NamedPipeEndpointAddress address)
        {
            configurator.AddNamedPipeEndpoint(typeof(ITestService), address, testDelegate);

            Mock.Get(configurator).Verify(p => p.AddEndpoint <NetNamedPipeBinding>(typeof(ITestService), address, testDelegate));
        }