From 7fb66dd34d32149686a4e404744e8eb3e6b8c8cb Mon Sep 17 00:00:00 2001 From: Mike Date: Sat, 13 Oct 2018 06:53:59 -0400 Subject: [PATCH] Fix DI Registration for IDownstreamRouteProvider (#656) The two singletons registered for IDownstreamRouteProvider, DownstreamRouteFinder and DownstreamRouteCreator, were registered using `TryAddSingleton`. This would cause DownstreamRouteFinder to be instantiated and found but the "Try" made DownstreamRouteCreator not registered. This was noted in the following in `DownstreamRouteProviderFactory`: ``` _providers = provider.GetServices().ToDictionary(x => x.GetType().Name); ``` With the registration being done using `TryAddSingleton` only one element was added to the dictionary. Changing this to `AddSingleton` fixed this issue. This was uncovered in an error on line 30 of `DownstreamRouteProviderFactory`. The key for `nameof(DownstreamRouteCreator)` did not exist causing an exception to be thrown. --- src/Ocelot/DependencyInjection/OcelotBuilder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ocelot/DependencyInjection/OcelotBuilder.cs b/src/Ocelot/DependencyInjection/OcelotBuilder.cs index c90d0ed9..753bf0e0 100644 --- a/src/Ocelot/DependencyInjection/OcelotBuilder.cs +++ b/src/Ocelot/DependencyInjection/OcelotBuilder.cs @@ -94,8 +94,8 @@ namespace Ocelot.DependencyInjection Services.TryAddSingleton(); Services.TryAddSingleton(); Services.TryAddSingleton(); - Services.TryAddSingleton(); - Services.TryAddSingleton(); + Services.AddSingleton(); + Services.AddSingleton(); Services.TryAddSingleton(); Services.TryAddSingleton(); Services.TryAddSingleton();