| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- //------------------------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------------------------
- namespace System.ServiceModel.Configuration
- {
- using System.Configuration;
- using System.Diagnostics.CodeAnalysis;
- using System.ServiceModel;
- using System.Globalization;
- using System.Net;
- using System.Net.Security;
- using System.Runtime;
- using System.Security.Authentication.ExtendedProtection.Configuration;
- using System.Security.Principal;
- using System.ServiceModel.Channels;
- using System.ComponentModel;
- [SuppressMessage(FxCop.Category.Configuration, FxCop.Rule.ConfigurationValidatorAttributeRule,
- Justification = "The ExtendedProtectionPolicyElement configuration object and the configuration validation is owned by the NCL team.")]
- public partial class HttpTransportElement : TransportElement
- {
- public HttpTransportElement()
- {
- }
- [ConfigurationProperty(ConfigurationStrings.AllowCookies, DefaultValue = HttpTransportDefaults.AllowCookies)]
- public bool AllowCookies
- {
- get { return (bool)base[ConfigurationStrings.AllowCookies]; }
- set { base[ConfigurationStrings.AllowCookies] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.RequestInitializationTimeout, DefaultValue = HttpTransportDefaults.RequestInitializationTimeoutString)]
- [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
- [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
- public TimeSpan RequestInitializationTimeout
- {
- get { return (TimeSpan)base[ConfigurationStrings.RequestInitializationTimeout]; }
- set { base[ConfigurationStrings.RequestInitializationTimeout] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.AuthenticationScheme, DefaultValue = HttpTransportDefaults.AuthenticationScheme)]
- [StandardRuntimeFlagEnumValidator(typeof(AuthenticationSchemes))]
- public AuthenticationSchemes AuthenticationScheme
- {
- get { return (AuthenticationSchemes)base[ConfigurationStrings.AuthenticationScheme]; }
- set { base[ConfigurationStrings.AuthenticationScheme] = value; }
- }
- public override Type BindingElementType
- {
- get { return typeof(HttpTransportBindingElement); }
- }
- [ConfigurationProperty(ConfigurationStrings.BypassProxyOnLocal, DefaultValue = HttpTransportDefaults.BypassProxyOnLocal)]
- public bool BypassProxyOnLocal
- {
- get { return (bool)base[ConfigurationStrings.BypassProxyOnLocal]; }
- set { base[ConfigurationStrings.BypassProxyOnLocal] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.DecompressionEnabled, DefaultValue = HttpTransportDefaults.DecompressionEnabled)]
- public bool DecompressionEnabled
- {
- get { return (bool)base[ConfigurationStrings.DecompressionEnabled]; }
- set { base[ConfigurationStrings.DecompressionEnabled] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.HostNameComparisonMode, DefaultValue = HttpTransportDefaults.HostNameComparisonMode)]
- [ServiceModelEnumValidator(typeof(HostNameComparisonModeHelper))]
- public HostNameComparisonMode HostNameComparisonMode
- {
- get { return (HostNameComparisonMode)base[ConfigurationStrings.HostNameComparisonMode]; }
- set { base[ConfigurationStrings.HostNameComparisonMode] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.KeepAliveEnabled, DefaultValue = HttpTransportDefaults.KeepAliveEnabled)]
- public bool KeepAliveEnabled
- {
- get { return (bool)base[ConfigurationStrings.KeepAliveEnabled]; }
- set { base[ConfigurationStrings.KeepAliveEnabled] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.MaxBufferSize, DefaultValue = TransportDefaults.MaxBufferSize)]
- [IntegerValidator(MinValue = 1)]
- public int MaxBufferSize
- {
- get { return (int)base[ConfigurationStrings.MaxBufferSize]; }
- set { base[ConfigurationStrings.MaxBufferSize] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.MaxPendingAccepts, DefaultValue = HttpTransportDefaults.DefaultMaxPendingAccepts)]
- [IntegerValidator(MinValue = 0, MaxValue = HttpTransportDefaults.MaxPendingAcceptsUpperLimit)]
- public int MaxPendingAccepts
- {
- get { return (int)base[ConfigurationStrings.MaxPendingAccepts]; }
- set { base[ConfigurationStrings.MaxPendingAccepts] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.MessageHandlerFactory, DefaultValue = HttpTransportDefaults.MessageHandlerFactory)]
- [HttpMessageHandlerFactoryValidator]
- public HttpMessageHandlerFactoryElement MessageHandlerFactory
- {
- get { return (HttpMessageHandlerFactoryElement)this[ConfigurationStrings.MessageHandlerFactory]; }
- set { base[ConfigurationStrings.MessageHandlerFactory] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.ProxyAddress, DefaultValue = HttpTransportDefaults.ProxyAddress)]
- public Uri ProxyAddress
- {
- get { return (Uri)base[ConfigurationStrings.ProxyAddress]; }
- set { base[ConfigurationStrings.ProxyAddress] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.ProxyAuthenticationScheme, DefaultValue = HttpTransportDefaults.ProxyAuthenticationScheme)]
- [StandardRuntimeEnumValidator(typeof(AuthenticationSchemes))]
- public AuthenticationSchemes ProxyAuthenticationScheme
- {
- get { return (AuthenticationSchemes)base[ConfigurationStrings.ProxyAuthenticationScheme]; }
- set { base[ConfigurationStrings.ProxyAuthenticationScheme] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.Realm, DefaultValue = HttpTransportDefaults.Realm)]
- [StringValidator(MinLength = 0)]
- public string Realm
- {
- get { return (string)base[ConfigurationStrings.Realm]; }
- set
- {
- if (String.IsNullOrEmpty(value))
- {
- value = String.Empty;
- }
- base[ConfigurationStrings.Realm] = value;
- }
- }
- [ConfigurationProperty(ConfigurationStrings.TransferMode, DefaultValue = HttpTransportDefaults.TransferMode)]
- [ServiceModelEnumValidator(typeof(TransferModeHelper))]
- public TransferMode TransferMode
- {
- get { return (TransferMode)base[ConfigurationStrings.TransferMode]; }
- set { base[ConfigurationStrings.TransferMode] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.UnsafeConnectionNtlmAuthentication, DefaultValue = HttpTransportDefaults.UnsafeConnectionNtlmAuthentication)]
- public bool UnsafeConnectionNtlmAuthentication
- {
- get { return (bool)base[ConfigurationStrings.UnsafeConnectionNtlmAuthentication]; }
- set { base[ConfigurationStrings.UnsafeConnectionNtlmAuthentication] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.UseDefaultWebProxy, DefaultValue = HttpTransportDefaults.UseDefaultWebProxy)]
- public bool UseDefaultWebProxy
- {
- get { return (bool)base[ConfigurationStrings.UseDefaultWebProxy]; }
- set { base[ConfigurationStrings.UseDefaultWebProxy] = value; }
- }
- [ConfigurationProperty(ConfigurationStrings.ExtendedProtectionPolicy)]
- public ExtendedProtectionPolicyElement ExtendedProtectionPolicy
- {
- get { return (ExtendedProtectionPolicyElement)base[ConfigurationStrings.ExtendedProtectionPolicy]; }
- private set { base[ConfigurationStrings.ExtendedProtectionPolicy] = value; }
- }
- [System.Diagnostics.CodeAnalysis.SuppressMessage(FxCop.Category.Configuration, "Configuration104")]
- [ConfigurationProperty(ConfigurationStrings.WebSocketSettingsSectionName)]
- public WebSocketTransportSettingsElement WebSocketSettings
- {
- get { return (WebSocketTransportSettingsElement)base[ConfigurationStrings.WebSocketSettingsSectionName]; }
- set { base[ConfigurationStrings.WebSocketSettingsSectionName] = value; }
- }
- public override void ApplyConfiguration(BindingElement bindingElement)
- {
- base.ApplyConfiguration(bindingElement);
- HttpTransportBindingElement binding = (HttpTransportBindingElement)bindingElement;
- binding.AllowCookies = this.AllowCookies;
- binding.AuthenticationScheme = this.AuthenticationScheme;
- binding.BypassProxyOnLocal = this.BypassProxyOnLocal;
- binding.DecompressionEnabled = this.DecompressionEnabled;
- binding.KeepAliveEnabled = this.KeepAliveEnabled;
- binding.HostNameComparisonMode = this.HostNameComparisonMode;
- PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
- if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
- {
- binding.MaxBufferSize = this.MaxBufferSize;
- }
- binding.MaxPendingAccepts = this.MaxPendingAccepts;
- binding.ProxyAddress = this.ProxyAddress;
- binding.ProxyAuthenticationScheme = this.ProxyAuthenticationScheme;
- binding.Realm = this.Realm;
- binding.RequestInitializationTimeout = this.RequestInitializationTimeout;
- binding.TransferMode = this.TransferMode;
- binding.UnsafeConnectionNtlmAuthentication = this.UnsafeConnectionNtlmAuthentication;
- binding.UseDefaultWebProxy = this.UseDefaultWebProxy;
- binding.ExtendedProtectionPolicy = ChannelBindingUtility.BuildPolicy(this.ExtendedProtectionPolicy);
- this.WebSocketSettings.ApplyConfiguration(binding.WebSocketSettings);
- if (this.MessageHandlerFactory != null)
- {
- binding.MessageHandlerFactory = HttpMessageHandlerFactory.CreateFromConfigurationElement(this.MessageHandlerFactory);
- }
- }
- public override void CopyFrom(ServiceModelExtensionElement from)
- {
- base.CopyFrom(from);
- HttpTransportElement source = (HttpTransportElement)from;
- #pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
- this.AllowCookies = source.AllowCookies;
- this.RequestInitializationTimeout = source.RequestInitializationTimeout;
- this.AuthenticationScheme = source.AuthenticationScheme;
- this.BypassProxyOnLocal = source.BypassProxyOnLocal;
- this.DecompressionEnabled = source.DecompressionEnabled;
- this.KeepAliveEnabled = source.KeepAliveEnabled;
- this.HostNameComparisonMode = source.HostNameComparisonMode;
- this.MaxBufferSize = source.MaxBufferSize;
- this.MaxPendingAccepts = source.MaxPendingAccepts;
- this.ProxyAddress = source.ProxyAddress;
- this.ProxyAuthenticationScheme = source.ProxyAuthenticationScheme;
- this.Realm = source.Realm;
- this.TransferMode = source.TransferMode;
- this.UnsafeConnectionNtlmAuthentication = source.UnsafeConnectionNtlmAuthentication;
- this.UseDefaultWebProxy = source.UseDefaultWebProxy;
- this.WebSocketSettings = source.WebSocketSettings;
- this.MessageHandlerFactory = source.MessageHandlerFactory;
- ChannelBindingUtility.CopyFrom(source.ExtendedProtectionPolicy, this.ExtendedProtectionPolicy);
- }
- protected override TransportBindingElement CreateDefaultBindingElement()
- {
- return new HttpTransportBindingElement();
- }
- protected internal override void InitializeFrom(BindingElement bindingElement)
- {
- base.InitializeFrom(bindingElement);
- HttpTransportBindingElement source = (HttpTransportBindingElement)bindingElement;
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.AllowCookies, source.AllowCookies);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.AuthenticationScheme, source.AuthenticationScheme);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.DecompressionEnabled, source.DecompressionEnabled);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.BypassProxyOnLocal, source.BypassProxyOnLocal);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.KeepAliveEnabled, source.KeepAliveEnabled);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.HostNameComparisonMode, source.HostNameComparisonMode);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferSize, source.MaxBufferSize);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxPendingAccepts, source.MaxPendingAccepts);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ProxyAddress, source.ProxyAddress);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ProxyAuthenticationScheme, source.ProxyAuthenticationScheme);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.Realm, source.Realm);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.RequestInitializationTimeout, source.RequestInitializationTimeout);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransferMode, source.TransferMode);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.UnsafeConnectionNtlmAuthentication, source.UnsafeConnectionNtlmAuthentication);
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.UseDefaultWebProxy, source.UseDefaultWebProxy);
- this.WebSocketSettings.InitializeFrom(source.WebSocketSettings);
- if (source.MessageHandlerFactory != null)
- {
- this.MessageHandlerFactory = source.MessageHandlerFactory.GenerateConfigurationElement();
- }
- ChannelBindingUtility.InitializeFrom(source.ExtendedProtectionPolicy, this.ExtendedProtectionPolicy);
- }
- }
- }
|