Ejemplo n.º 1
0
        public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
        {
            WSHttpBinding binding = new WSHttpBinding();

            binding.MaxReceivedMessageSize = args.MaxReceivedMessageSize;
            binding.ReaderQuotas.MaxStringContentLength = args.MaxReceivedMessageSize;
            binding.ReaderQuotas.MaxArrayLength         = args.MaxReceivedMessageSize;
            binding.Security.Mode = WebServicesSettings.Default.SecurityMode;
            binding.Security.Message.ClientCredentialType = args.Authenticated
                                                                ? MessageCredentialType.UserName
                                                                : MessageCredentialType.None;
            // establish endpoint
            host.AddServiceEndpoint(args.ServiceContract, binding, "");

            // expose meta-data via HTTP GET
            ServiceMetadataBehavior metadataBehavior = host.Description.Behaviors.Find <ServiceMetadataBehavior>();

            if (metadataBehavior == null)
            {
                metadataBehavior = new ServiceMetadataBehavior();
                metadataBehavior.HttpGetEnabled = true;
                host.Description.Behaviors.Add(metadataBehavior);
            }

            // set up the certificate
            if (WebServicesSettings.Default.SecurityMode == SecurityMode.Message ||
                WebServicesSettings.Default.SecurityMode == SecurityMode.TransportWithMessageCredential)
            {
                host.Credentials.ServiceCertificate.SetCertificate(
                    StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, args.HostUri.Host);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Configures the specified service host, according to the specified arguments.
        /// </summary>
        /// <param name="host"></param>
        /// <param name="args"></param>
        public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
        {
            WSHttpBinding binding = new WSHttpBinding();

            binding.MaxReceivedMessageSize = args.MaxReceivedMessageSize;
            binding.ReaderQuotas.MaxStringContentLength = args.MaxReceivedMessageSize;
            binding.ReaderQuotas.MaxArrayLength         = args.MaxReceivedMessageSize;
            binding.Security.Mode = SecurityMode.Message;
            binding.Security.Message.ClientCredentialType = args.Authenticated ?
                                                            MessageCredentialType.UserName : MessageCredentialType.None;

            // establish endpoint
            host.AddServiceEndpoint(args.ServiceContract, binding, "");

            // expose meta-data via HTTP GET
            ServiceMetadataBehavior metadataBehavior = host.Description.Behaviors.Find <ServiceMetadataBehavior>();

            if (metadataBehavior == null)
            {
                metadataBehavior = new ServiceMetadataBehavior();
                metadataBehavior.HttpGetEnabled = true;
                host.Description.Behaviors.Add(metadataBehavior);
            }

            // set up the certificate - required for WSHttpBinding
            host.Credentials.ServiceCertificate.SetCertificate(
                args.CertificateSearchDirective.StoreLocation, args.CertificateSearchDirective.StoreName,
                args.CertificateSearchDirective.FindType, args.CertificateSearchDirective.FindValue);
        }
Ejemplo n.º 3
0
		/// <summary>
		/// Configures the specified service host, according to the specified arguments.
		/// </summary>
		/// <param name="host"></param>
		/// <param name="args"></param>
		public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
		{
			var binding = new WSHttpBinding();
			binding.MaxReceivedMessageSize = args.MaxReceivedMessageSize;
			if (args.SendTimeoutSeconds > 0)
				binding.SendTimeout = TimeSpan.FromSeconds(args.SendTimeoutSeconds);

			binding.ReaderQuotas.MaxStringContentLength = args.MaxReceivedMessageSize;
			binding.ReaderQuotas.MaxArrayLength = args.MaxReceivedMessageSize;
			binding.Security.Mode = SecurityMode.Message;
			binding.Security.Message.ClientCredentialType = args.Authenticated ?
				MessageCredentialType.UserName : MessageCredentialType.None;

			// establish endpoint
			host.AddServiceEndpoint(args.ServiceContract, binding, "");

			// expose meta-data via HTTP GET
			var metadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
			if (metadataBehavior == null)
			{
				metadataBehavior = new ServiceMetadataBehavior();
				metadataBehavior.HttpGetEnabled = true;
				host.Description.Behaviors.Add(metadataBehavior);
			}

			//TODO (Rockstar): remove this after refactoring to do per-sop edits
			foreach (var endpoint in host.Description.Endpoints)
				foreach (var operation in endpoint.Contract.Operations)
					operation.Behaviors.Find<DataContractSerializerOperationBehavior>().MaxItemsInObjectGraph = args.MaxReceivedMessageSize;

			// set up the certificate - required for WSHttpBinding
			host.Credentials.ServiceCertificate.SetCertificate(
				args.CertificateSearchDirective.StoreLocation, args.CertificateSearchDirective.StoreName,
				args.CertificateSearchDirective.FindType, args.CertificateSearchDirective.FindValue);
		}
Ejemplo n.º 4
0
		/// <summary>
		/// Configures the specified service host, according to the specified arguments.
		/// </summary>
		/// <param name="host"></param>
		/// <param name="args"></param>
		public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
		{
			WSHttpBinding binding = new WSHttpBinding();
			binding.MaxReceivedMessageSize = args.MaxReceivedMessageSize;
            binding.ReaderQuotas.MaxStringContentLength = args.MaxReceivedMessageSize;
            binding.ReaderQuotas.MaxArrayLength = args.MaxReceivedMessageSize;
			binding.Security.Mode = SecurityMode.Message;
			binding.Security.Message.ClientCredentialType = args.Authenticated ?
				MessageCredentialType.UserName : MessageCredentialType.None;

			// establish endpoint
			host.AddServiceEndpoint(args.ServiceContract, binding, "");

			// expose meta-data via HTTP GET
			ServiceMetadataBehavior metadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
			if (metadataBehavior == null)
			{
				metadataBehavior = new ServiceMetadataBehavior();
				metadataBehavior.HttpGetEnabled = true;
				host.Description.Behaviors.Add(metadataBehavior);
			}

			// set up the certificate - required for WSHttpBinding
            host.Credentials.ServiceCertificate.SetCertificate(
                args.CertificateSearchDirective.StoreLocation, args.CertificateSearchDirective.StoreName,
                args.CertificateSearchDirective.FindType, args.CertificateSearchDirective.FindValue);
		}
Ejemplo n.º 5
0
		/// <summary>
		/// Configures the specified service host, according to the specified arguments.
		/// </summary>
		/// <param name="host"></param>
		/// <param name="args"></param>
		public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
		{
			var binding = new NetTcpBinding
				{
					MaxReceivedMessageSize = args.TransferMode == TransferMode.Buffered
						                         ? Math.Min(int.MaxValue, args.MaxReceivedMessageSize)
						                         : args.MaxReceivedMessageSize,
					TransferMode = args.TransferMode,
					ReaderQuotas =
						{
							MaxStringContentLength = (int) Math.Min(int.MaxValue, args.MaxReceivedMessageSize),
							MaxArrayLength = (int) Math.Min(int.MaxValue, args.MaxReceivedMessageSize)
						},
					Security =
						{
							Mode = args.Authenticated ? SecurityMode.TransportWithMessageCredential : SecurityMode.Transport,
							Message =
								{
									ClientCredentialType = args.Authenticated
										                       ? MessageCredentialType.UserName
										                       : MessageCredentialType.None
								},
							// turn off transport security altogether
							Transport = {ClientCredentialType = TcpClientCredentialType.None}
						}
				};

			if (args.SendTimeoutSeconds > 0)
				binding.SendTimeout = TimeSpan.FromSeconds(args.SendTimeoutSeconds);

			// establish endpoint
			host.AddServiceEndpoint(args.ServiceContract, binding, "");

#if DEBUG && MEX
			// We need to expose the metadata in order to generate client proxy code for some service
			// used in applications that cannot reference any CC assemblies (e.g utilities for installer).
			if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
			{

				var smb = new ServiceMetadataBehavior();
				smb.HttpGetEnabled = true;
				smb.HttpGetUrl = new Uri(string.Format("http://localhost:{0}/{1}/mex", args.HostUri.Port + 1, args.ServiceContract.Name));
				Platform.Log(LogLevel.Debug, "Service Metadata endpoint: {0}", smb.HttpGetUrl);
				host.Description.Behaviors.Add(smb);
			}
			var endpoint = host.AddServiceEndpoint(typeof(IMetadataExchange), binding, args.ServiceContract.Name);
			Platform.Log(LogLevel.Debug, "MetadataExchange Endpoint for {0}: {1}", args.ServiceContract.Name, endpoint.ListenUri);

#endif

			// set up the certificate - required for transmitting custom credentials
			host.Credentials.ServiceCertificate.SetCertificate(
				args.CertificateSearchDirective.StoreLocation, args.CertificateSearchDirective.StoreName,
				args.CertificateSearchDirective.FindType, args.CertificateSearchDirective.FindValue);
		}
Ejemplo n.º 6
0
        /// <summary>
        /// Configures the specified service host, according to the specified arguments.
        /// </summary>
        /// <param name="host"></param>
        /// <param name="args"></param>
        public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
        {
            var binding = new NetTcpBinding
            {
                MaxReceivedMessageSize = args.TransferMode == TransferMode.Buffered
                                                                         ? Math.Min(int.MaxValue, args.MaxReceivedMessageSize)
                                                                         : args.MaxReceivedMessageSize,
                TransferMode = args.TransferMode,
                ReaderQuotas =
                {
                    MaxStringContentLength = (int)Math.Min(int.MaxValue, args.MaxReceivedMessageSize),
                    MaxArrayLength         = (int)Math.Min(int.MaxValue, args.MaxReceivedMessageSize)
                },
                Security =
                {
                    Mode    = args.Authenticated ? SecurityMode.TransportWithMessageCredential : SecurityMode.Transport,
                    Message =
                    {
                        ClientCredentialType = args.Authenticated
                                                                                                       ? MessageCredentialType.UserName
                                                                                                       : MessageCredentialType.None
                    },
                    // turn off transport security altogether
                    Transport                = { ClientCredentialType = TcpClientCredentialType.None }
                }
            };

            if (args.SendTimeoutSeconds > 0)
            {
                binding.SendTimeout = TimeSpan.FromSeconds(args.SendTimeoutSeconds);
            }

            // establish endpoint
            host.AddServiceEndpoint(args.ServiceContract, binding, "");

#if DEBUG && MEX
            // We need to expose the metadata in order to generate client proxy code for some service
            // used in applications that cannot reference any CC assemblies (e.g utilities for installer).
            if (host.Description.Behaviors.Find <ServiceMetadataBehavior>() == null)
            {
                var smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                smb.HttpGetUrl     = new Uri(string.Format("http://localhost:{0}/{1}/mex", args.HostUri.Port + 1, args.ServiceContract.Name));
                Platform.Log(LogLevel.Debug, "Service Metadata endpoint: {0}", smb.HttpGetUrl);
                host.Description.Behaviors.Add(smb);
            }
            var endpoint = host.AddServiceEndpoint(typeof(IMetadataExchange), binding, args.ServiceContract.Name);
            Platform.Log(LogLevel.Debug, "MetadataExchange Endpoint for {0}: {1}", args.ServiceContract.Name, endpoint.ListenUri);
#endif

            // set up the certificate - required for transmitting custom credentials
            host.Credentials.ServiceCertificate.SetCertificate(
                args.CertificateSearchDirective.StoreLocation, args.CertificateSearchDirective.StoreName,
                args.CertificateSearchDirective.FindType, args.CertificateSearchDirective.FindValue);
        }
		/// <summary>
		/// Configures the specified service host, according to the specified arguments.
		/// </summary>
		/// <param name="host"></param>
		/// <param name="args"></param>
		public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
		{
			var binding = new NetNamedPipeBinding();
			//binding.MaxReceivedMessageSize = args.MaxReceivedMessageSize;
			//binding.ReaderQuotas.MaxStringContentLength = args.MaxReceivedMessageSize;
			//binding.ReaderQuotas.MaxArrayLength = args.MaxReceivedMessageSize;
			//binding.Security.Mode = args.AuthenticationRequired ? NetNamedPipeSecurityMode.Transport : NetNamedPipeSecurityMode.None;
			//binding.Security.Transport.ProtectionLevel = args.AuthenticationRequired ? ProtectionLevel.EncryptAndSign : ProtectionLevel.None;

			// turn off transport security altogether
			//binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;

			// establish endpoint
			host.AddServiceEndpoint(args.ServiceContract, binding, "");
		}
Ejemplo n.º 8
0
        /// <summary>
        /// Configures the specified service host, according to the specified arguments.
        /// </summary>
        /// <param name="host"></param>
        /// <param name="args"></param>
        public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
        {
            var binding = new NetNamedPipeBinding();

            //binding.MaxReceivedMessageSize = args.MaxReceivedMessageSize;
            //binding.ReaderQuotas.MaxStringContentLength = args.MaxReceivedMessageSize;
            //binding.ReaderQuotas.MaxArrayLength = args.MaxReceivedMessageSize;
            //binding.Security.Mode = args.AuthenticationRequired ? NetNamedPipeSecurityMode.Transport : NetNamedPipeSecurityMode.None;
            //binding.Security.Transport.ProtectionLevel = args.AuthenticationRequired ? ProtectionLevel.EncryptAndSign : ProtectionLevel.None;

            // turn off transport security altogether
            //binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;

            // establish endpoint
            host.AddServiceEndpoint(args.ServiceContract, binding, "");
        }
        public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
        {
            WSHttpBinding binding = new WSHttpBinding();

            binding.MaxReceivedMessageSize = args.MaxReceivedMessageSize;

            if (args.SendTimeoutSeconds > 0)
            {
                binding.SendTimeout = TimeSpan.FromSeconds(args.SendTimeoutSeconds);
            }

            binding.ReaderQuotas.MaxStringContentLength = args.MaxReceivedMessageSize;
            binding.ReaderQuotas.MaxArrayLength         = args.MaxReceivedMessageSize;
            binding.Security.Mode = WebServicesSettings.Default.SecurityMode;
            binding.Security.Message.ClientCredentialType = args.Authenticated
                                                                                ? MessageCredentialType.UserName
                                                                                : MessageCredentialType.None;
            // establish endpoint
            host.AddServiceEndpoint(args.ServiceContract, binding, "");

            // expose meta-data via HTTP GET
            ServiceMetadataBehavior metadataBehavior = host.Description.Behaviors.Find <ServiceMetadataBehavior>();

            if (metadataBehavior == null)
            {
                metadataBehavior = new ServiceMetadataBehavior();
                metadataBehavior.HttpGetEnabled = true;
                host.Description.Behaviors.Add(metadataBehavior);
            }

            //TODO (Rockstar): remove this after refactoring to do per-sop edits
            foreach (var endpoint in host.Description.Endpoints)
            {
                foreach (var operation in endpoint.Contract.Operations)
                {
                    operation.Behaviors.Find <DataContractSerializerOperationBehavior>().MaxItemsInObjectGraph = args.MaxReceivedMessageSize;
                }
            }

            // set up the certificate
            if (WebServicesSettings.Default.SecurityMode == SecurityMode.Message ||
                WebServicesSettings.Default.SecurityMode == SecurityMode.TransportWithMessageCredential)
            {
                host.Credentials.ServiceCertificate.SetCertificate(
                    StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, args.HostUri.Host);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Configures the specified service host, according to the specified arguments.
        /// </summary>
        /// <param name="host"></param>
        /// <param name="args"></param>
        public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
        {
            var binding = new WSHttpBinding();

            binding.MaxReceivedMessageSize = args.MaxReceivedMessageSize;
            if (args.SendTimeoutSeconds > 0)
            {
                binding.SendTimeout = TimeSpan.FromSeconds(args.SendTimeoutSeconds);
            }

            binding.ReaderQuotas.MaxStringContentLength = (int)Math.Min(int.MaxValue, args.MaxReceivedMessageSize);
            binding.ReaderQuotas.MaxArrayLength         = (int)Math.Min(int.MaxValue, args.MaxReceivedMessageSize);
            binding.Security.Mode = SecurityMode.Message;
            binding.Security.Message.ClientCredentialType = args.Authenticated ?
                                                            MessageCredentialType.UserName : MessageCredentialType.None;

            // establish endpoint
            host.AddServiceEndpoint(args.ServiceContract, binding, "");

            // expose meta-data via HTTP GET
            var metadataBehavior = host.Description.Behaviors.Find <ServiceMetadataBehavior>();

            if (metadataBehavior == null)
            {
                metadataBehavior = new ServiceMetadataBehavior();
                metadataBehavior.HttpGetEnabled = true;
                host.Description.Behaviors.Add(metadataBehavior);
            }

            //TODO (Rockstar): remove this after refactoring to do per-sop edits
            foreach (var endpoint in host.Description.Endpoints)
            {
                foreach (var operation in endpoint.Contract.Operations)
                {
                    operation.Behaviors.Find <DataContractSerializerOperationBehavior>().MaxItemsInObjectGraph = (int)Math.Min(int.MaxValue, args.MaxReceivedMessageSize);
                }
            }

            // set up the certificate - required for WSHttpBinding
            host.Credentials.ServiceCertificate.SetCertificate(
                args.CertificateSearchDirective.StoreLocation, args.CertificateSearchDirective.StoreName,
                args.CertificateSearchDirective.FindType, args.CertificateSearchDirective.FindValue);
        }
Ejemplo n.º 11
0
        public void ConfigureServiceHost(ServiceHost host, ServiceHostConfigurationArgs args)
        {
            var settings = new EnterpriseImageServerServiceSettings();

            // Per MSDN: Transport security is provided externally to WCF. If you are creating a self-hosted WCF application, you can bind an SSL certificate to the address using the HttpCfg.exe tool.
            // The service may appears running but client will not be able to connect. For this reason, it's best to explicitly disallow this mode.
            if (settings.SecurityMode == SecurityMode.Transport)
            {
                throw new Exception("Transport security is not supported. Please change EnterpriseImageServerServiceSettings.SecurityMode");
            }


            var binding = new WSHttpBinding
            {
                MaxReceivedMessageSize = args.MaxReceivedMessageSize
            };

            if (args.SendTimeoutSeconds > 0)
            {
                binding.SendTimeout = TimeSpan.FromSeconds(args.SendTimeoutSeconds);
            }

            binding.ReaderQuotas.MaxStringContentLength = args.MaxReceivedMessageSize;
            binding.ReaderQuotas.MaxArrayLength         = args.MaxReceivedMessageSize;
            binding.Security.Mode = settings.SecurityMode;
            binding.Security.Message.ClientCredentialType = args.Authenticated
                                                                                ? MessageCredentialType.UserName
                                                                                : MessageCredentialType.None;


            // TransportWithMessageCredential cannot be used in conjuction with ClientCredentialType=None
            if (binding.Security.Mode == SecurityMode.TransportWithMessageCredential &&
                binding.Security.Message.ClientCredentialType == MessageCredentialType.None)
            {
                throw new Exception(string.Format("TransportWithMessageCredential is not supported for '{0}' service. Please change EnterpriseImageServerServiceSettings.SecurityMode", args.ServiceContract.Name));
            }


            // establish endpoint
            host.AddServiceEndpoint(args.ServiceContract, binding, "");

            // expose meta-data via HTTP GET
            var metadataBehavior = host.Description.Behaviors.Find <ServiceMetadataBehavior>();

            if (metadataBehavior == null)
            {
                metadataBehavior = new ServiceMetadataBehavior
                {
                    HttpGetEnabled = true
                };
                host.Description.Behaviors.Add(metadataBehavior);
            }

            //TODO (Rockstar): remove this after refactoring to do per-sop edits
            foreach (var endpoint in host.Description.Endpoints)
            {
                foreach (var operation in endpoint.Contract.Operations)
                {
                    operation.Behaviors.Find <DataContractSerializerOperationBehavior>().MaxItemsInObjectGraph = args.MaxReceivedMessageSize;
                }
            }

            // set up the certificate
            if (settings.SecurityMode == SecurityMode.Message ||
                settings.SecurityMode == SecurityMode.TransportWithMessageCredential)
            {
                host.Credentials.ServiceCertificate.SetCertificate(
                    StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, args.HostUri.Host);
            }
        }