AddressingVersion.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. //------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------
  4. namespace System.ServiceModel.Channels
  5. {
  6. using System.Runtime.Serialization;
  7. using System.Xml;
  8. using System.ServiceModel.Security;
  9. public sealed class AddressingVersion
  10. {
  11. string ns;
  12. XmlDictionaryString dictionaryNs;
  13. MessagePartSpecification signedMessageParts;
  14. string toStringFormat;
  15. string anonymous;
  16. XmlDictionaryString dictionaryAnonymous;
  17. Uri anonymousUri;
  18. Uri noneUri;
  19. string faultAction;
  20. string defaultFaultAction;
  21. static AddressingVersion none = new AddressingVersion(AddressingNoneStrings.Namespace, XD.AddressingNoneDictionary.Namespace,
  22. SR.AddressingNoneToStringFormat, new MessagePartSpecification(), null, null, null, null, null);
  23. static AddressingVersion addressing10 = new AddressingVersion(Addressing10Strings.Namespace,
  24. XD.Addressing10Dictionary.Namespace, SR.Addressing10ToStringFormat, Addressing10SignedMessageParts,
  25. Addressing10Strings.Anonymous, XD.Addressing10Dictionary.Anonymous, Addressing10Strings.NoneAddress,
  26. Addressing10Strings.FaultAction, Addressing10Strings.DefaultFaultAction);
  27. static MessagePartSpecification addressing10SignedMessageParts;
  28. static AddressingVersion addressing200408 = new AddressingVersion(Addressing200408Strings.Namespace,
  29. XD.Addressing200408Dictionary.Namespace, SR.Addressing200408ToStringFormat, Addressing200408SignedMessageParts,
  30. Addressing200408Strings.Anonymous, XD.Addressing200408Dictionary.Anonymous, null,
  31. Addressing200408Strings.FaultAction, Addressing200408Strings.DefaultFaultAction);
  32. static MessagePartSpecification addressing200408SignedMessageParts;
  33. AddressingVersion(string ns, XmlDictionaryString dictionaryNs, string toStringFormat,
  34. MessagePartSpecification signedMessageParts, string anonymous, XmlDictionaryString dictionaryAnonymous, string none, string faultAction, string defaultFaultAction)
  35. {
  36. this.ns = ns;
  37. this.dictionaryNs = dictionaryNs;
  38. this.toStringFormat = toStringFormat;
  39. this.signedMessageParts = signedMessageParts;
  40. this.anonymous = anonymous;
  41. this.dictionaryAnonymous = dictionaryAnonymous;
  42. if (anonymous != null)
  43. {
  44. this.anonymousUri = new Uri(anonymous);
  45. }
  46. if (none != null)
  47. {
  48. this.noneUri = new Uri(none);
  49. }
  50. this.faultAction = faultAction;
  51. this.defaultFaultAction = defaultFaultAction;
  52. }
  53. public static AddressingVersion WSAddressingAugust2004
  54. {
  55. get { return addressing200408; }
  56. }
  57. public static AddressingVersion WSAddressing10
  58. {
  59. get { return addressing10; }
  60. }
  61. public static AddressingVersion None
  62. {
  63. get { return none; }
  64. }
  65. internal string Namespace
  66. {
  67. get { return ns; }
  68. }
  69. static MessagePartSpecification Addressing10SignedMessageParts
  70. {
  71. get
  72. {
  73. if (addressing10SignedMessageParts == null)
  74. {
  75. MessagePartSpecification s = new MessagePartSpecification(
  76. new XmlQualifiedName(AddressingStrings.To, Addressing10Strings.Namespace),
  77. new XmlQualifiedName(AddressingStrings.From, Addressing10Strings.Namespace),
  78. new XmlQualifiedName(AddressingStrings.FaultTo, Addressing10Strings.Namespace),
  79. new XmlQualifiedName(AddressingStrings.ReplyTo, Addressing10Strings.Namespace),
  80. new XmlQualifiedName(AddressingStrings.MessageId, Addressing10Strings.Namespace),
  81. new XmlQualifiedName(AddressingStrings.RelatesTo, Addressing10Strings.Namespace),
  82. new XmlQualifiedName(AddressingStrings.Action, Addressing10Strings.Namespace)
  83. );
  84. s.MakeReadOnly();
  85. addressing10SignedMessageParts = s;
  86. }
  87. return addressing10SignedMessageParts;
  88. }
  89. }
  90. static MessagePartSpecification Addressing200408SignedMessageParts
  91. {
  92. get
  93. {
  94. if (addressing200408SignedMessageParts == null)
  95. {
  96. MessagePartSpecification s = new MessagePartSpecification(
  97. new XmlQualifiedName(AddressingStrings.To, Addressing200408Strings.Namespace),
  98. new XmlQualifiedName(AddressingStrings.From, Addressing200408Strings.Namespace),
  99. new XmlQualifiedName(AddressingStrings.FaultTo, Addressing200408Strings.Namespace),
  100. new XmlQualifiedName(AddressingStrings.ReplyTo, Addressing200408Strings.Namespace),
  101. new XmlQualifiedName(AddressingStrings.MessageId, Addressing200408Strings.Namespace),
  102. new XmlQualifiedName(AddressingStrings.RelatesTo, Addressing200408Strings.Namespace),
  103. new XmlQualifiedName(AddressingStrings.Action, Addressing200408Strings.Namespace)
  104. );
  105. s.MakeReadOnly();
  106. addressing200408SignedMessageParts = s;
  107. }
  108. return addressing200408SignedMessageParts;
  109. }
  110. }
  111. internal XmlDictionaryString DictionaryNamespace
  112. {
  113. get { return dictionaryNs; }
  114. }
  115. internal string Anonymous
  116. {
  117. get { return anonymous; }
  118. }
  119. internal XmlDictionaryString DictionaryAnonymous
  120. {
  121. get { return dictionaryAnonymous; }
  122. }
  123. internal Uri AnonymousUri
  124. {
  125. get { return anonymousUri; }
  126. }
  127. internal Uri NoneUri
  128. {
  129. get { return noneUri; }
  130. }
  131. internal string FaultAction // the action for addressing faults
  132. {
  133. get { return faultAction; }
  134. }
  135. internal string DefaultFaultAction // a default string that can be used for non-addressing faults
  136. {
  137. get { return defaultFaultAction; }
  138. }
  139. internal MessagePartSpecification SignedMessageParts
  140. {
  141. get
  142. {
  143. return this.signedMessageParts;
  144. }
  145. }
  146. public override string ToString()
  147. {
  148. return SR.GetString(toStringFormat, Namespace);
  149. }
  150. }
  151. }