@@ -423,12 +423,12 @@ public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string
423
423
424
424
public override ArraySegment < byte > WriteMessage ( Message message , int maxMessageSize , BufferManager bufferManager , int messageOffset )
425
425
{
426
- return WriteMessageInternal ( message , maxMessageSize , bufferManager , messageOffset , GenerateStartInfoString ( ) , _boundary , MtomStartUri , writeMessageHeaders : false ) ;
426
+ return WriteMessageInternal ( message , maxMessageSize , bufferManager , messageOffset , GenerateStartInfoString ( ) , _boundary , MtomStartUri ) ;
427
427
}
428
428
429
429
public override ValueTask < ArraySegment < byte > > WriteMessageAsync ( Message message , int maxMessageSize , BufferManager bufferManager , int messageOffset )
430
430
{
431
- return new ValueTask < ArraySegment < byte > > ( WriteMessageInternal ( message , maxMessageSize , bufferManager , messageOffset , GenerateStartInfoString ( ) , _boundary , MtomStartUri , writeMessageHeaders : false ) ) ;
431
+ return new ValueTask < ArraySegment < byte > > ( WriteMessageInternal ( message , maxMessageSize , bufferManager , messageOffset , GenerateStartInfoString ( ) , _boundary , MtomStartUri ) ) ;
432
432
}
433
433
434
434
private string GetContentType ( out string boundary )
@@ -446,8 +446,14 @@ internal string FormatContentType(string boundary, string startInfo)
446
446
MtomContentType , MtomStartUri , boundary , startInfo ) ;
447
447
}
448
448
449
- private ArraySegment < byte > WriteMessageInternal ( Message message , int maxMessageSize , BufferManager bufferManager , int messageOffset , string startInfo , string boundary , string startUri , bool writeMessageHeaders )
449
+ private ArraySegment < byte > WriteMessageInternal ( Message message , int maxMessageSize , BufferManager bufferManager , int messageOffset , string startInfo , string boundary , string startUri )
450
450
{
451
+ bool writeMessageHeaders = true ;
452
+ if ( message . Properties . TryGetValue ( "System.ServiceModel.Channel.MtomMessageEncoder.WriteMessageHeaders" , out object boolAsObject ) && boolAsObject is bool )
453
+ {
454
+ writeMessageHeaders = ( bool ) boolAsObject ;
455
+ }
456
+
451
457
if ( message == null )
452
458
throw DiagnosticUtility . ExceptionUtility . ThrowHelperArgumentNull ( nameof ( message ) ) ;
453
459
if ( bufferManager == null )
@@ -517,7 +523,7 @@ public override void WriteMessage(Message message, Stream stream)
517
523
518
524
public override ValueTask WriteMessageAsync ( Message message , Stream stream )
519
525
{
520
- return WriteMessageInternalAsync ( message , stream , GenerateStartInfoString ( ) , _boundary , MtomStartUri , writeMessageHeaders : false ) ;
526
+ return WriteMessageInternalAsync ( message , stream , GenerateStartInfoString ( ) , _boundary , MtomStartUri ) ;
521
527
}
522
528
523
529
public override IAsyncResult BeginWriteMessage ( Message message , Stream stream , AsyncCallback callback , object state )
@@ -530,8 +536,14 @@ public override void EndWriteMessage(IAsyncResult result)
530
536
result . ToApmEnd ( ) ;
531
537
}
532
538
533
- private async ValueTask WriteMessageInternalAsync ( Message message , Stream stream , string startInfo , string boundary , string startUri , bool writeMessageHeaders )
539
+ private async ValueTask WriteMessageInternalAsync ( Message message , Stream stream , string startInfo , string boundary , string startUri )
534
540
{
541
+ bool writeMessageHeaders = true ;
542
+ if ( message . Properties . TryGetValue ( "System.ServiceModel.Channel.MtomMessageEncoder.WriteMessageHeaders" , out object boolAsObject ) && boolAsObject is bool )
543
+ {
544
+ writeMessageHeaders = ( bool ) boolAsObject ;
545
+ }
546
+
535
547
if ( message == null )
536
548
throw DiagnosticUtility . ExceptionUtility . ThrowHelperError ( new ArgumentNullException ( nameof ( message ) ) ) ;
537
549
if ( stream == null )
0 commit comments