WSDualHttpBindingElement.cs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. //------------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------------------------
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System.Configuration;
  7. using System.ServiceModel;
  8. using System.Globalization;
  9. using System.ServiceModel.Security;
  10. using System.ComponentModel;
  11. using System.Text;
  12. using System.ServiceModel.Channels;
  13. public partial class WSDualHttpBindingElement : StandardBindingElement
  14. {
  15. public WSDualHttpBindingElement(string name)
  16. : base(name)
  17. {
  18. }
  19. public WSDualHttpBindingElement()
  20. : this(null)
  21. {
  22. }
  23. protected override Type BindingElementType
  24. {
  25. get { return typeof(WSDualHttpBinding); }
  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.ClientBaseAddress, DefaultValue = null)]
  34. public Uri ClientBaseAddress
  35. {
  36. get { return (Uri)base[ConfigurationStrings.ClientBaseAddress]; }
  37. set { base[ConfigurationStrings.ClientBaseAddress] = value; }
  38. }
  39. [ConfigurationProperty(ConfigurationStrings.TransactionFlow, DefaultValue = TransactionFlowDefaults.Transactions)]
  40. public bool TransactionFlow
  41. {
  42. get { return (bool)base[ConfigurationStrings.TransactionFlow]; }
  43. set { base[ConfigurationStrings.TransactionFlow] = value; }
  44. }
  45. [ConfigurationProperty(ConfigurationStrings.HostNameComparisonMode, DefaultValue = HttpTransportDefaults.HostNameComparisonMode)]
  46. [ServiceModelEnumValidator(typeof(HostNameComparisonModeHelper))]
  47. public HostNameComparisonMode HostNameComparisonMode
  48. {
  49. get { return (HostNameComparisonMode)base[ConfigurationStrings.HostNameComparisonMode]; }
  50. set { base[ConfigurationStrings.HostNameComparisonMode] = value; }
  51. }
  52. [ConfigurationProperty(ConfigurationStrings.MaxBufferPoolSize, DefaultValue = TransportDefaults.MaxBufferPoolSize)]
  53. [LongValidator(MinValue = 0)]
  54. public long MaxBufferPoolSize
  55. {
  56. get { return (long)base[ConfigurationStrings.MaxBufferPoolSize]; }
  57. set { base[ConfigurationStrings.MaxBufferPoolSize] = value; }
  58. }
  59. [ConfigurationProperty(ConfigurationStrings.MaxReceivedMessageSize, DefaultValue = TransportDefaults.MaxReceivedMessageSize)]
  60. [LongValidator(MinValue = 1)]
  61. public long MaxReceivedMessageSize
  62. {
  63. get { return (long)base[ConfigurationStrings.MaxReceivedMessageSize]; }
  64. set { base[ConfigurationStrings.MaxReceivedMessageSize] = value; }
  65. }
  66. [ConfigurationProperty(ConfigurationStrings.MessageEncoding, DefaultValue = WSDualHttpBindingDefaults.MessageEncoding)]
  67. [ServiceModelEnumValidator(typeof(WSMessageEncodingHelper))]
  68. public WSMessageEncoding MessageEncoding
  69. {
  70. get { return (WSMessageEncoding)base[ConfigurationStrings.MessageEncoding]; }
  71. set { base[ConfigurationStrings.MessageEncoding] = value; }
  72. }
  73. [ConfigurationProperty(ConfigurationStrings.ProxyAddress, DefaultValue = HttpTransportDefaults.ProxyAddress)]
  74. public Uri ProxyAddress
  75. {
  76. get { return (Uri)base[ConfigurationStrings.ProxyAddress]; }
  77. set { base[ConfigurationStrings.ProxyAddress] = value; }
  78. }
  79. [ConfigurationProperty(ConfigurationStrings.ReaderQuotas)]
  80. public XmlDictionaryReaderQuotasElement ReaderQuotas
  81. {
  82. get { return (XmlDictionaryReaderQuotasElement)base[ConfigurationStrings.ReaderQuotas]; }
  83. }
  84. [ConfigurationProperty(ConfigurationStrings.ReliableSession)]
  85. public StandardBindingReliableSessionElement ReliableSession
  86. {
  87. get { return (StandardBindingReliableSessionElement)base[ConfigurationStrings.ReliableSession]; }
  88. }
  89. [ConfigurationProperty(ConfigurationStrings.Security)]
  90. public WSDualHttpSecurityElement Security
  91. {
  92. get { return (WSDualHttpSecurityElement)base[ConfigurationStrings.Security]; }
  93. }
  94. [ConfigurationProperty(ConfigurationStrings.TextEncoding, DefaultValue = TextEncoderDefaults.EncodingString)]
  95. [TypeConverter(typeof(EncodingConverter))]
  96. public Encoding TextEncoding
  97. {
  98. get { return (Encoding)base[ConfigurationStrings.TextEncoding]; }
  99. set { base[ConfigurationStrings.TextEncoding] = value; }
  100. }
  101. [ConfigurationProperty(ConfigurationStrings.UseDefaultWebProxy, DefaultValue = HttpTransportDefaults.UseDefaultWebProxy)]
  102. public bool UseDefaultWebProxy
  103. {
  104. get { return (bool)base[ConfigurationStrings.UseDefaultWebProxy]; }
  105. set { base[ConfigurationStrings.UseDefaultWebProxy] = value; }
  106. }
  107. protected internal override void InitializeFrom(Binding binding)
  108. {
  109. base.InitializeFrom(binding);
  110. WSDualHttpBinding wspBinding = (WSDualHttpBinding)binding;
  111. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.BypassProxyOnLocal, wspBinding.BypassProxyOnLocal);
  112. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ClientBaseAddress, wspBinding.ClientBaseAddress);
  113. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransactionFlow, wspBinding.TransactionFlow);
  114. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.HostNameComparisonMode, wspBinding.HostNameComparisonMode);
  115. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferPoolSize, wspBinding.MaxBufferPoolSize);
  116. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxReceivedMessageSize, wspBinding.MaxReceivedMessageSize);
  117. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MessageEncoding, wspBinding.MessageEncoding);
  118. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ProxyAddress, wspBinding.ProxyAddress);
  119. this.ReliableSession.InitializeFrom(wspBinding.ReliableSession);
  120. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TextEncoding, wspBinding.TextEncoding);
  121. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.UseDefaultWebProxy, wspBinding.UseDefaultWebProxy);
  122. this.Security.InitializeFrom(wspBinding.Security);
  123. this.ReaderQuotas.InitializeFrom(wspBinding.ReaderQuotas);
  124. }
  125. protected override void OnApplyConfiguration(Binding binding)
  126. {
  127. WSDualHttpBinding wspBinding = (WSDualHttpBinding)binding;
  128. wspBinding.BypassProxyOnLocal = this.BypassProxyOnLocal;
  129. if (this.ClientBaseAddress != null)
  130. wspBinding.ClientBaseAddress = this.ClientBaseAddress;
  131. wspBinding.TransactionFlow = this.TransactionFlow;
  132. wspBinding.HostNameComparisonMode = this.HostNameComparisonMode;
  133. wspBinding.MaxBufferPoolSize = this.MaxBufferPoolSize;
  134. wspBinding.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
  135. wspBinding.MessageEncoding = this.MessageEncoding;
  136. if (this.ProxyAddress != null)
  137. wspBinding.ProxyAddress = this.ProxyAddress;
  138. this.ReliableSession.ApplyConfiguration(wspBinding.ReliableSession);
  139. wspBinding.TextEncoding = this.TextEncoding;
  140. wspBinding.UseDefaultWebProxy = this.UseDefaultWebProxy;
  141. this.Security.ApplyConfiguration(wspBinding.Security);
  142. this.ReaderQuotas.ApplyConfiguration(wspBinding.ReaderQuotas);
  143. }
  144. }
  145. }