TransientFaultHandling.Caching
                             
                            
                                3.0.0
                            
                        
                    dotnet add package TransientFaultHandling.Caching --version 3.0.0
NuGet\Install-Package TransientFaultHandling.Caching -Version 3.0.0
<PackageReference Include="TransientFaultHandling.Caching" Version="3.0.0" />
<PackageVersion Include="TransientFaultHandling.Caching" Version="3.0.0" />
<PackageReference Include="TransientFaultHandling.Caching" />
paket add TransientFaultHandling.Caching --version 3.0.0
#r "nuget: TransientFaultHandling.Caching, 3.0.0"
#:package TransientFaultHandling.Caching@3.0.0
#addin nuget:?package=TransientFaultHandling.Caching&version=3.0.0
#tool nuget:?package=TransientFaultHandling.Caching&version=3.0.0
Transient Fault Handling Application Block/Retry patterns for modern .NET.
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 6 & .NET 5 & .NET Core & .NET Standard.
- New functional and fluent APIs to easily implement retry logic.
- The outdated configuration & APIs are replaced by modern .NET JSON/XML/INI configuration.
Introduction
With this library, the old code with retry logic based on Microsoft Enterprise Library can be ported to .NET 6 & .NET 5 & .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 { 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 is compatible. net5.0-windows was computed. net6.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. | 
| .NET Core | netcoreapp1.0 was computed. netcoreapp1.1 was computed. netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. | 
| .NET Standard | netstandard1.5 is compatible. netstandard1.6 was computed. 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 | tizen30 was computed. 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 1.5- EnterpriseLibrary.TransientFaultHandling.Core (>= 3.0.0)
- NETStandard.Library (>= 1.6.1)
- System.ServiceModel.Primitives (>= 4.5.3)
 
- 
                                                    .NETStandard 2.0- EnterpriseLibrary.TransientFaultHandling.Core (>= 3.0.0)
- System.ServiceModel.Primitives (>= 4.9.0)
 
- 
                                                    net5.0- EnterpriseLibrary.TransientFaultHandling.Core (>= 3.0.0)
- System.ServiceModel.Primitives (>= 4.9.0)
 
- 
                                                    net6.0- EnterpriseLibrary.TransientFaultHandling.Core (>= 3.0.0)
- System.ServiceModel.Primitives (>= 4.9.0)
 
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.