TransientFaultHandling.Configuration
2.0.0
See the version list below for details.
dotnet add package TransientFaultHandling.Configuration --version 2.0.0
NuGet\Install-Package TransientFaultHandling.Configuration -Version 2.0.0
<PackageReference Include="TransientFaultHandling.Configuration" Version="2.0.0" />
paket add TransientFaultHandling.Configuration --version 2.0.0
#r "nuget: TransientFaultHandling.Configuration, 2.0.0"
// Install TransientFaultHandling.Configuration as a Cake Addin #addin nuget:?package=TransientFaultHandling.Configuration&version=2.0.0 // Install TransientFaultHandling.Configuration as a Cake Tool #tool nuget:?package=TransientFaultHandling.Configuration&version=2.0.0
EnterpriseLibrary.TransientFaultHandling.Core
Transient Fault Handling Application Block/Retry patterns for .NET Core / .NET Standard.
TransientFaultHandling.Core is retry library for transient error handling. It is ported from Microsoft Enterprise Library’s Transient Fault Handling Application Block, a library widely used with .NET Framework.
- The retry pattern APIs are ported to .NET Core/.NET Standard
- New functional and fluent APIs added easily implement retry logic
- The outdated configuration APIs are now up to date
Introduction
With this library, the old code with retry logic based on Microsoft Enterprise Library can be ported to .NET Core/.NET Standard without modification:
ITransientErrorDetectionStrategy transientExceptionDetection = new MyDetection();
RetryStrategy retryStrategy = new FixedInterval(retryCount: 5, retryInterval: TimeSpan.FromSeconds(1));
RetryPolicy retryPolicy = new RetryPolicy(transientExceptionDetection, retryStrategy);
retryPolicy.ExecuteAction(() => webClient.DownloadString("https://DixinYan.com"));
With this library, it is extremely easy to detect transient exception and implement retry logic. For example, the following code downloads a string, if the exception thrown is transient (a WebException), it retries up to 5 times, with it waits for 1 second between each retry:
Retry.FixedInterval(
() => webClient.DownloadString("https://DixinYan.com"),
isTransient: exception => exception is WebException,
retryCount: 5, retryInterval: TimeSpan.FromSeconds(1));
Fluent APIs are also provided for even better readability:
Retry
.WithIncremental(retryCount: 5, initialInterval: TimeSpan.FromSeconds(1),
increment: TimeSpan.FromSeconds(1))
.Catch<OperationCanceledException>()
.Catch<WebException>(exception =>
exception.Response is HttpWebResponse response && response.StatusCode == HttpStatusCode.RequestTimeout)
.ExecuteAction(() => webClient.DownloadString("https://DixinYan.com"));
It also supports JSON/XML/INI configuration:
{
"retryStrategy": {
"name1": {
"fastFirstRetry": "true",
"retryCount": 5,
"retryInterval": "00:00:00.1"
},
"name2": {
"fastFirstRetry": "true",
"retryCount": 55,
"initialInterval": "00:00:00.2",
"increment": "00:00:00.3"
}
}
}
Document
https://weblogs.asp.net/dixin/transientfaulthandling-core-retry-library-for-net-core-net-standard
Source
https://github.com/Dixin/EnterpriseLibrary.TransientFaultHandling.Core (Partially ported from https://github.com/MicrosoftArchive/transient-fault-handling-application-block, with additional new APIs and redesigned/reimplemented APIs)
NuGet installation
It can be installed through NuGet using .NET CLI:
dotnet add package EnterpriseLibrary.TransientFaultHandling.Core
dotnet add package TransientFaultHandling.Caching
dotnet add package TransientFaultHandling.Configuration
dotnet add package TransientFaultHandling.Data
Or in Visual Studio NuGet Package Manager Console:
Install-Package EnterpriseLibrary.TransientFaultHandling.Core
Install-Package TransientFaultHandling.Caching
Install-Package TransientFaultHandling.Configuration
Install-Package TransientFaultHandling.Data
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- EnterpriseLibrary.TransientFaultHandling.Core (>= 2.0.0)
- Microsoft.Extensions.Configuration (>= 2.2.0)
- Microsoft.Extensions.Configuration.Binder (>= 2.2.0)
- TransientFaultHandling.Data.Core (>= 2.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.