WSTrustRequestBodyWriter.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------
  4. namespace System.ServiceModel.Security
  5. {
  6. using System;
  7. using System.ServiceModel.Diagnostics;
  8. using System.ServiceModel.Channels;
  9. using System.Xml;
  10. using System.Diagnostics;
  11. using System.IdentityModel.Protocols.WSTrust;
  12. /// <summary>
  13. /// Defines a Body Writer that writes out a RequestSecurityToken into an XmlDictionaryWriter.
  14. /// </summary>
  15. public class WSTrustRequestBodyWriter : BodyWriter
  16. {
  17. WSTrustSerializationContext _serializationContext;
  18. System.IdentityModel.Protocols.WSTrust.RequestSecurityToken _requestSecurityToken;
  19. WSTrustRequestSerializer _serializer;
  20. /// <summary>
  21. /// Constructor for the WSTrustRequestBodyWriter.
  22. /// </summary>
  23. /// <param name="requestSecurityToken">The RequestSecurityToken object to be serialized in the outgoing Message.</param>
  24. /// <param name="serializer">Serializer is responsible for writting the requestSecurityToken into a XmlDictionaryWritter.</param>
  25. /// <param name="serializationContext">Context for the serialization.</param>
  26. /// <exception cref="ArgumentNullException">The 'requestSecurityToken' is null.</exception>
  27. /// <exception cref="ArgumentNullException">The 'serializer' is null.</exception>
  28. /// <exception cref="ArgumentNullException">The 'serializationContext' is null.</exception>
  29. public WSTrustRequestBodyWriter(System.IdentityModel.Protocols.WSTrust.RequestSecurityToken requestSecurityToken, WSTrustRequestSerializer serializer, WSTrustSerializationContext serializationContext)
  30. : base(true)
  31. {
  32. if (requestSecurityToken == null)
  33. {
  34. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("requestSecurityToken");
  35. }
  36. if (serializer == null)
  37. {
  38. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serializer");
  39. }
  40. if (serializationContext == null)
  41. {
  42. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serializationContext");
  43. }
  44. _requestSecurityToken = requestSecurityToken;
  45. _serializer = serializer;
  46. _serializationContext = serializationContext;
  47. }
  48. /// <summary>
  49. /// Override of the base class method. Serializes the requestSecurityToken to the outgoing stream.
  50. /// </summary>
  51. /// <param name="writer">Writer into which the requestSecurityToken should be written.</param>
  52. protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
  53. {
  54. _serializer.WriteXml(_requestSecurityToken, writer, _serializationContext);
  55. }
  56. }
  57. }