protected override void OnWriteStartBody(XmlDictionaryWriter writer) { if (_startBodyFragment != null || _fullBodyFragment != null) { WriteStartInnerMessageWithId(writer); return; } switch (_state) { case BodyState.Created: case BodyState.Encrypted: InnerMessage.WriteStartBody(writer); return; case BodyState.Signed: case BodyState.EncryptedThenSigned: XmlDictionaryReader reader = _fullBodyBuffer.GetReader(0); writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI); writer.WriteAttributes(reader, false); reader.Close(); return; case BodyState.SignedThenEncrypted: writer.WriteStartElement(_bodyPrefix, XD.MessageDictionary.Body, Version.Envelope.DictionaryNamespace); if (_bodyAttributes != null) { XmlAttributeHolder.WriteAttributes(_bodyAttributes, writer); } return; default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateBadStateException(nameof(OnWriteStartBody))); } }
private void WriteStartInnerMessageWithId(XmlDictionaryWriter writer) { InnerMessage.WriteStartBody(writer); if (_bodyIdInserted) { _securityHeader.StandardsManager.IdManager.WriteIdAttribute(writer, BodyId); } }
protected override void OnWriteStartBody(XmlDictionaryWriter writer) { if (_state == BodyState.Created) { InnerMessage.WriteStartBody(writer); return; } XmlDictionaryReader reader = CreateFullBodyReader(); reader.MoveToContent(); writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI); writer.WriteAttributes(reader, false); reader.Close(); }