HttpBindingBaseElement.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. // <copyright>
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. // </copyright>
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System.ComponentModel;
  7. using System.Configuration;
  8. using System.Runtime;
  9. using System.ServiceModel;
  10. using System.ServiceModel.Channels;
  11. using System.Text;
  12. /// <summary>
  13. /// HttpBindingBaseElement for HttpBindingBase
  14. /// </summary>
  15. public abstract partial class HttpBindingBaseElement : StandardBindingElement
  16. {
  17. protected HttpBindingBaseElement(string name)
  18. : base(name)
  19. {
  20. }
  21. [ConfigurationProperty(ConfigurationStrings.AllowCookies, DefaultValue = HttpTransportDefaults.AllowCookies)]
  22. public bool AllowCookies
  23. {
  24. get { return (bool)base[ConfigurationStrings.AllowCookies]; }
  25. set { base[ConfigurationStrings.AllowCookies] = value; }
  26. }
  27. [ConfigurationProperty(ConfigurationStrings.BypassProxyOnLocal, DefaultValue = HttpTransportDefaults.BypassProxyOnLocal)]
  28. public bool BypassProxyOnLocal
  29. {
  30. get { return (bool)base[ConfigurationStrings.BypassProxyOnLocal]; }
  31. set { base[ConfigurationStrings.BypassProxyOnLocal] = value; }
  32. }
  33. [ConfigurationProperty(ConfigurationStrings.HostNameComparisonMode, DefaultValue = HttpTransportDefaults.HostNameComparisonMode)]
  34. [ServiceModelEnumValidator(typeof(HostNameComparisonModeHelper))]
  35. public HostNameComparisonMode HostNameComparisonMode
  36. {
  37. get { return (HostNameComparisonMode)base[ConfigurationStrings.HostNameComparisonMode]; }
  38. set { base[ConfigurationStrings.HostNameComparisonMode] = value; }
  39. }
  40. [ConfigurationProperty(ConfigurationStrings.MaxBufferPoolSize, DefaultValue = TransportDefaults.MaxBufferPoolSize)]
  41. [LongValidator(MinValue = 0)]
  42. public long MaxBufferPoolSize
  43. {
  44. get { return (long)base[ConfigurationStrings.MaxBufferPoolSize]; }
  45. set { base[ConfigurationStrings.MaxBufferPoolSize] = value; }
  46. }
  47. [ConfigurationProperty(ConfigurationStrings.MaxBufferSize, DefaultValue = TransportDefaults.MaxBufferSize)]
  48. [IntegerValidator(MinValue = 1)]
  49. public int MaxBufferSize
  50. {
  51. get { return (int)base[ConfigurationStrings.MaxBufferSize]; }
  52. set { base[ConfigurationStrings.MaxBufferSize] = value; }
  53. }
  54. [ConfigurationProperty(ConfigurationStrings.MaxReceivedMessageSize, DefaultValue = TransportDefaults.MaxReceivedMessageSize)]
  55. [LongValidator(MinValue = 1)]
  56. public long MaxReceivedMessageSize
  57. {
  58. get { return (long)base[ConfigurationStrings.MaxReceivedMessageSize]; }
  59. set { base[ConfigurationStrings.MaxReceivedMessageSize] = value; }
  60. }
  61. [System.Diagnostics.CodeAnalysis.SuppressMessage(FxCop.Category.Configuration, "Configuration104",
  62. Justification = "This attribute comes from previous releases.")]
  63. [ConfigurationProperty(ConfigurationStrings.ProxyAddress, DefaultValue = HttpTransportDefaults.ProxyAddress)]
  64. public Uri ProxyAddress
  65. {
  66. get { return (Uri)base[ConfigurationStrings.ProxyAddress]; }
  67. set { base[ConfigurationStrings.ProxyAddress] = value; }
  68. }
  69. [ConfigurationProperty(ConfigurationStrings.ReaderQuotas)]
  70. public XmlDictionaryReaderQuotasElement ReaderQuotas
  71. {
  72. get { return (XmlDictionaryReaderQuotasElement)base[ConfigurationStrings.ReaderQuotas]; }
  73. }
  74. [System.Diagnostics.CodeAnalysis.SuppressMessage(FxCop.Category.Configuration, "Configuration104",
  75. Justification = "This attribute comes from previous releases.")]
  76. [ConfigurationProperty(ConfigurationStrings.TextEncoding, DefaultValue = TextEncoderDefaults.EncodingString)]
  77. [TypeConverter(typeof(EncodingConverter))]
  78. public Encoding TextEncoding
  79. {
  80. get { return (Encoding)base[ConfigurationStrings.TextEncoding]; }
  81. set { base[ConfigurationStrings.TextEncoding] = value; }
  82. }
  83. [ConfigurationProperty(ConfigurationStrings.TransferMode, DefaultValue = HttpTransportDefaults.TransferMode)]
  84. [ServiceModelEnumValidator(typeof(TransferModeHelper))]
  85. public TransferMode TransferMode
  86. {
  87. get { return (TransferMode)base[ConfigurationStrings.TransferMode]; }
  88. set { base[ConfigurationStrings.TransferMode] = value; }
  89. }
  90. [ConfigurationProperty(ConfigurationStrings.UseDefaultWebProxy, DefaultValue = HttpTransportDefaults.UseDefaultWebProxy)]
  91. public bool UseDefaultWebProxy
  92. {
  93. get { return (bool)base[ConfigurationStrings.UseDefaultWebProxy]; }
  94. set { base[ConfigurationStrings.UseDefaultWebProxy] = value; }
  95. }
  96. // BasicHttpContextBinding uses this hook to not emit AllowCookies
  97. internal virtual void InitializeAllowCookies(HttpBindingBase binding)
  98. {
  99. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.AllowCookies, binding.AllowCookies);
  100. }
  101. protected internal override void InitializeFrom(Binding binding)
  102. {
  103. base.InitializeFrom(binding);
  104. HttpBindingBase httpBindingBase = (HttpBindingBase)binding;
  105. this.InitializeAllowCookies(httpBindingBase);
  106. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.BypassProxyOnLocal, httpBindingBase.BypassProxyOnLocal);
  107. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.HostNameComparisonMode, httpBindingBase.HostNameComparisonMode);
  108. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferSize, httpBindingBase.MaxBufferSize);
  109. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferPoolSize, httpBindingBase.MaxBufferPoolSize);
  110. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxReceivedMessageSize, httpBindingBase.MaxReceivedMessageSize);
  111. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ProxyAddress, httpBindingBase.ProxyAddress);
  112. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TextEncoding, httpBindingBase.TextEncoding);
  113. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransferMode, httpBindingBase.TransferMode);
  114. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.UseDefaultWebProxy, httpBindingBase.UseDefaultWebProxy);
  115. this.ReaderQuotas.InitializeFrom(httpBindingBase.ReaderQuotas);
  116. }
  117. protected override void OnApplyConfiguration(Binding binding)
  118. {
  119. HttpBindingBase httpBindingBase = (HttpBindingBase)binding;
  120. httpBindingBase.BypassProxyOnLocal = this.BypassProxyOnLocal;
  121. httpBindingBase.HostNameComparisonMode = this.HostNameComparisonMode;
  122. httpBindingBase.MaxBufferPoolSize = this.MaxBufferPoolSize;
  123. httpBindingBase.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
  124. httpBindingBase.TextEncoding = this.TextEncoding;
  125. httpBindingBase.TransferMode = this.TransferMode;
  126. httpBindingBase.UseDefaultWebProxy = this.UseDefaultWebProxy;
  127. httpBindingBase.AllowCookies = this.AllowCookies;
  128. if (this.ProxyAddress != null)
  129. {
  130. httpBindingBase.ProxyAddress = this.ProxyAddress;
  131. }
  132. PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
  133. if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
  134. {
  135. httpBindingBase.MaxBufferSize = this.MaxBufferSize;
  136. }
  137. this.ReaderQuotas.ApplyConfiguration(httpBindingBase.ReaderQuotas);
  138. }
  139. }
  140. }