33using System . Linq ;
44using System . ServiceModel . Channels ;
55using System . Text ;
6+ using System . Threading ;
67using System . Threading . Tasks ;
78using System . Xml ;
89using System . Xml . Linq ;
@@ -33,7 +34,10 @@ public ParsedMessage(MessageHeaders headers, MessageProperties properties, Messa
3334
3435 public override bool IsEmpty => _isEmpty ;
3536
36- public static ParsedMessage FromStreamReader ( StreamReader stream , MessageVersion version )
37+ #if ! NETCOREAPP3_0_OR_GREATER
38+ #pragma warning disable CS1998 // XDocument.LoadAsync does only exists in NETCOREAPP3_0_OR_GREATER
39+ #endif
40+ public static async Task < ParsedMessage > FromStreamReaderAsync ( StreamReader stream , MessageVersion version )
3741 {
3842 if ( stream == null )
3943 {
@@ -45,14 +49,21 @@ public static ParsedMessage FromStreamReader(StreamReader stream, MessageVersion
4549 throw new ArgumentNullException ( nameof ( version ) ) ;
4650 }
4751
52+ #if NETCOREAPP3_0_OR_GREATER
53+ var envelope = await XDocument . LoadAsync ( stream , LoadOptions . None , CancellationToken . None ) ;
54+ #else
4855 var envelope = XDocument . Load ( stream ) ;
56+ #endif
4957 var headers = ExtractSoapHeaders ( envelope , version ) ;
5058
5159 //var properties = ExtractSoapProperties(httpRequest);
5260 ( var body , var isEmpty ) = ExtractSoapBody ( envelope , version ) ;
5361
5462 return new ParsedMessage ( headers , new MessageProperties ( ) , version , body , isEmpty ) ;
5563 }
64+ #if ! NETCOREAPP3_0_OR_GREATER
65+ #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
66+ #endif
5667
5768 public XDocument GetBodyAsXDocument ( )
5869 {
0 commit comments