diff --git a/SystemExtensions.NetCore/SystemExtensions.NetCore.csproj b/SystemExtensions.NetCore/SystemExtensions.NetCore.csproj index 8238e34..ebc91b2 100644 --- a/SystemExtensions.NetCore/SystemExtensions.NetCore.csproj +++ b/SystemExtensions.NetCore/SystemExtensions.NetCore.csproj @@ -8,7 +8,7 @@ System LICENSE true - 1.6.6 + 1.6.7 Alexandru Macocian https://github.com/AlexMacocian/SystemExtensions Extensions for the System namespace diff --git a/SystemExtensions.NetStandard/Http/HttpClient.cs b/SystemExtensions.NetStandard/Http/HttpClient.cs index 8bbc872..142d585 100644 --- a/SystemExtensions.NetStandard/Http/HttpClient.cs +++ b/SystemExtensions.NetStandard/Http/HttpClient.cs @@ -8,6 +8,7 @@ namespace System.Net.Http; public sealed class HttpClient : IHttpClient, IDisposable { + private readonly bool disposeInnerClient = true; private readonly HttpClient httpClient; private readonly Type scope; private EventHandler eventEmitted; @@ -31,9 +32,10 @@ public sealed class HttpClient : IHttpClient, IDisposable public TimeSpan Timeout { get => this.httpClient.Timeout; set => this.httpClient.Timeout = value; } #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. - public HttpClient() + public HttpClient(bool disposeInnerClient = true) #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. { + this.disposeInnerClient = disposeInnerClient; this.httpClient = new HttpClient(); this.scope = typeof(Tscope); } @@ -41,8 +43,10 @@ public sealed class HttpClient : IHttpClient, IDisposable #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. public HttpClient( #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. - HttpMessageHandler handler) + HttpMessageHandler handler, + bool disposeInnerClient = true) { + this.disposeInnerClient = disposeInnerClient; this.httpClient = new HttpClient(handler); this.scope = typeof(Tscope); } @@ -51,8 +55,10 @@ public sealed class HttpClient : IHttpClient, IDisposable public HttpClient( #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. HttpMessageHandler handler, - bool disposeHandler) + bool disposeHandler, + bool disposeInnerClient = true) { + this.disposeInnerClient = disposeInnerClient; this.httpClient = new HttpClient(handler, disposeHandler); this.scope = typeof(Tscope); } @@ -60,8 +66,10 @@ public sealed class HttpClient : IHttpClient, IDisposable #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. public HttpClient( #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. - HttpClient httpClient) + HttpClient httpClient, + bool disposeInnerClient = true) { + this.disposeInnerClient = disposeInnerClient; this.httpClient = httpClient.ThrowIfNull(nameof(httpClient)); this.scope = typeof(Tscope); } @@ -223,7 +231,10 @@ public sealed class HttpClient : IHttpClient, IDisposable } public void Dispose() { - this.httpClient.Dispose(); + if (this.disposeInnerClient) + { + this.httpClient.Dispose(); + } } private void LogInformation(string url, string method) diff --git a/SystemExtensions.NetStandard/SystemExtensions.NetStandard.csproj b/SystemExtensions.NetStandard/SystemExtensions.NetStandard.csproj index 40dd059..0347364 100644 --- a/SystemExtensions.NetStandard/SystemExtensions.NetStandard.csproj +++ b/SystemExtensions.NetStandard/SystemExtensions.NetStandard.csproj @@ -7,7 +7,7 @@ LICENSE true System - 1.6.6 + 1.6.7 Alexandru Macocian https://github.com/AlexMacocian/SystemExtensions Extensions for the System namespace