mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 20:10:50 +08:00 
			
		
		
		
	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<IDownstreamRouteProvider>().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.
This commit is contained in:
		@@ -94,8 +94,8 @@ namespace Ocelot.DependencyInjection
 | 
				
			|||||||
            Services.TryAddSingleton<IUrlPathToUrlTemplateMatcher, RegExUrlMatcher>();
 | 
					            Services.TryAddSingleton<IUrlPathToUrlTemplateMatcher, RegExUrlMatcher>();
 | 
				
			||||||
            Services.TryAddSingleton<IPlaceholderNameAndValueFinder, UrlPathPlaceholderNameAndValueFinder>();
 | 
					            Services.TryAddSingleton<IPlaceholderNameAndValueFinder, UrlPathPlaceholderNameAndValueFinder>();
 | 
				
			||||||
            Services.TryAddSingleton<IDownstreamPathPlaceholderReplacer, DownstreamTemplatePathPlaceholderReplacer>();
 | 
					            Services.TryAddSingleton<IDownstreamPathPlaceholderReplacer, DownstreamTemplatePathPlaceholderReplacer>();
 | 
				
			||||||
            Services.TryAddSingleton<IDownstreamRouteProvider, DownstreamRouteFinder>();
 | 
					            Services.AddSingleton<IDownstreamRouteProvider, DownstreamRouteFinder>();
 | 
				
			||||||
            Services.TryAddSingleton<IDownstreamRouteProvider, DownstreamRouteCreator>();
 | 
					            Services.AddSingleton<IDownstreamRouteProvider, DownstreamRouteCreator>();
 | 
				
			||||||
            Services.TryAddSingleton<IDownstreamRouteProviderFactory, DownstreamRouteProviderFactory>();
 | 
					            Services.TryAddSingleton<IDownstreamRouteProviderFactory, DownstreamRouteProviderFactory>();
 | 
				
			||||||
            Services.TryAddSingleton<IHttpRequester, HttpClientHttpRequester>();
 | 
					            Services.TryAddSingleton<IHttpRequester, HttpClientHttpRequester>();
 | 
				
			||||||
            Services.TryAddSingleton<IHttpResponder, HttpContextResponder>();
 | 
					            Services.TryAddSingleton<IHttpResponder, HttpContextResponder>();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user