From d07b98468b3865b0ebaa78d1f5c16d494b7a0a2b Mon Sep 17 00:00:00 2001 From: etomas Date: Mon, 6 Feb 2017 13:53:36 +0100 Subject: [PATCH] Issue #9 - Do not hold the ASP.NET Core Configuration object as Singleton in the IoC container --- src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs | 2 +- src/Services/Basket/Basket.API/Startup.cs | 2 +- .../Catalog/Catalog.API/Controllers/CatalogController.cs | 4 ++-- src/Services/Catalog/Catalog.API/Startup.cs | 2 -- .../Identity/Identity.API/Controllers/HomeController.cs | 4 ++-- src/Web/WebMVC/Services/BasketService.cs | 4 ++-- src/Web/WebMVC/Services/CatalogService.cs | 4 ++-- src/Web/WebMVC/Services/OrderingService.cs | 4 ++-- src/Web/WebMVC/project.json | 3 ++- .../Server/Controllers/HomeController.cs | 4 ++-- src/Web/WebSPA/eShopOnContainers.WebSPA/project.json | 3 ++- 11 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs b/src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs index 5363bf352..19d8e7055 100644 --- a/src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs +++ b/src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs @@ -18,7 +18,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Model private ConnectionMultiplexer _redis; - public RedisBasketRepository(IOptions options, ILoggerFactory loggerFactory) + public RedisBasketRepository(IOptionsSnapshot options, ILoggerFactory loggerFactory) { _settings = options.Value; _logger = loggerFactory.CreateLogger(); diff --git a/src/Services/Basket/Basket.API/Startup.cs b/src/Services/Basket/Basket.API/Startup.cs index c9b73b556..35ac63f1e 100644 --- a/src/Services/Basket/Basket.API/Startup.cs +++ b/src/Services/Basket/Basket.API/Startup.cs @@ -44,7 +44,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API //that cost to startup instead of having the first request pay the //penalty. services.AddSingleton((sp) => { - var config = sp.GetRequiredService>().Value; + var config = sp.GetRequiredService>().Value; var ips = Dns.GetHostAddressesAsync(config.ConnectionString).Result; return ConnectionMultiplexer.Connect(ips.First().ToString()); }); diff --git a/src/Services/Catalog/Catalog.API/Controllers/CatalogController.cs b/src/Services/Catalog/Catalog.API/Controllers/CatalogController.cs index ebd674579..0d8ccc88a 100644 --- a/src/Services/Catalog/Catalog.API/Controllers/CatalogController.cs +++ b/src/Services/Catalog/Catalog.API/Controllers/CatalogController.cs @@ -14,9 +14,9 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Controllers public class CatalogController : ControllerBase { private readonly CatalogContext _context; - private readonly IOptions _settings; + private readonly IOptionsSnapshot _settings; - public CatalogController(CatalogContext context, IOptions settings) + public CatalogController(CatalogContext context, IOptionsSnapshot settings) { _context = context; _settings = settings; diff --git a/src/Services/Catalog/Catalog.API/Startup.cs b/src/Services/Catalog/Catalog.API/Startup.cs index 70369056e..38bea3ee3 100644 --- a/src/Services/Catalog/Catalog.API/Startup.cs +++ b/src/Services/Catalog/Catalog.API/Startup.cs @@ -38,8 +38,6 @@ public void ConfigureServices(IServiceCollection services) { - services.AddSingleton(Configuration); - services.AddDbContext(c => { c.UseSqlServer(Configuration["ConnectionString"]); diff --git a/src/Services/Identity/Identity.API/Controllers/HomeController.cs b/src/Services/Identity/Identity.API/Controllers/HomeController.cs index 9fbc8b190..f21ab65e0 100644 --- a/src/Services/Identity/Identity.API/Controllers/HomeController.cs +++ b/src/Services/Identity/Identity.API/Controllers/HomeController.cs @@ -15,10 +15,10 @@ namespace IdentityServer4.Quickstart.UI.Controllers public class HomeController : Controller { private readonly IIdentityServerInteractionService _interaction; - private readonly IOptions _settings; + private readonly IOptionsSnapshot _settings; private readonly IRedirectService _redirectSvc; - public HomeController(IIdentityServerInteractionService interaction, IOptions settings,IRedirectService redirectSvc) + public HomeController(IIdentityServerInteractionService interaction, IOptionsSnapshot settings,IRedirectService redirectSvc) { _interaction = interaction; _settings = settings; diff --git a/src/Web/WebMVC/Services/BasketService.cs b/src/Web/WebMVC/Services/BasketService.cs index 1d5678ffe..6ddbf0485 100644 --- a/src/Web/WebMVC/Services/BasketService.cs +++ b/src/Web/WebMVC/Services/BasketService.cs @@ -14,12 +14,12 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services { public class BasketService : IBasketService { - private readonly IOptions _settings; + private readonly IOptionsSnapshot _settings; private HttpClient _apiClient; private readonly string _remoteServiceBaseUrl; private IHttpContextAccessor _httpContextAccesor; - public BasketService(IOptions settings, IHttpContextAccessor httpContextAccesor) + public BasketService(IOptionsSnapshot settings, IHttpContextAccessor httpContextAccesor) { _settings = settings; _remoteServiceBaseUrl = _settings.Value.BasketUrl; diff --git a/src/Web/WebMVC/Services/CatalogService.cs b/src/Web/WebMVC/Services/CatalogService.cs index 9885ed4bf..b830c9542 100644 --- a/src/Web/WebMVC/Services/CatalogService.cs +++ b/src/Web/WebMVC/Services/CatalogService.cs @@ -15,11 +15,11 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services { public class CatalogService : ICatalogService { - private readonly IOptions _settings; + private readonly IOptionsSnapshot _settings; private HttpClient _apiClient; private readonly string _remoteServiceBaseUrl; - public CatalogService(IOptions settings, ILoggerFactory loggerFactory) { + public CatalogService(IOptionsSnapshot settings, ILoggerFactory loggerFactory) { _settings = settings; _remoteServiceBaseUrl = $"{_settings.Value.CatalogUrl}/api/v1/catalog/"; diff --git a/src/Web/WebMVC/Services/OrderingService.cs b/src/Web/WebMVC/Services/OrderingService.cs index 098f5eb45..652ee18b0 100644 --- a/src/Web/WebMVC/Services/OrderingService.cs +++ b/src/Web/WebMVC/Services/OrderingService.cs @@ -15,10 +15,10 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services { private HttpClient _apiClient; private readonly string _remoteServiceBaseUrl; - private readonly IOptions _settings; + private readonly IOptionsSnapshot _settings; private readonly IHttpContextAccessor _httpContextAccesor; - public OrderingService(IOptions settings, IHttpContextAccessor httpContextAccesor) + public OrderingService(IOptionsSnapshot settings, IHttpContextAccessor httpContextAccesor) { _remoteServiceBaseUrl = $"{settings.Value.OrderingUrl}/api/v1/orders"; _settings = settings; diff --git a/src/Web/WebMVC/project.json b/src/Web/WebMVC/project.json index f248f234a..6f67d8aa4 100644 --- a/src/Web/WebMVC/project.json +++ b/src/Web/WebMVC/project.json @@ -35,7 +35,8 @@ "System.IdentityModel.Tokens.Jwt": "5.0.0", "Microsoft.AspNetCore.Authentication.OpenIdConnect": "1.0.0", "Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0", - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0" + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0", + "Microsoft.Extensions.Options": "1.1.0" }, "tools": { "BundlerMinifier.Core": "2.0.238", diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/Server/Controllers/HomeController.cs b/src/Web/WebSPA/eShopOnContainers.WebSPA/Server/Controllers/HomeController.cs index ee980e334..7e78cd41a 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/Server/Controllers/HomeController.cs +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/Server/Controllers/HomeController.cs @@ -11,9 +11,9 @@ namespace eShopConContainers.WebSPA.Server.Controllers public class HomeController : Controller { private readonly IHostingEnvironment _env; - private readonly IOptions _settings; + private readonly IOptionsSnapshot _settings; - public HomeController(IHostingEnvironment env, IOptions settings) + public HomeController(IHostingEnvironment env, IOptionsSnapshot settings) { _env = env; _settings = settings; diff --git a/src/Web/WebSPA/eShopOnContainers.WebSPA/project.json b/src/Web/WebSPA/eShopOnContainers.WebSPA/project.json index 57b813c07..99e8a8a2f 100644 --- a/src/Web/WebSPA/eShopOnContainers.WebSPA/project.json +++ b/src/Web/WebSPA/eShopOnContainers.WebSPA/project.json @@ -36,7 +36,8 @@ "version": "1.0.0-preview2-final", "type": "build" }, - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0" + "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", + "Microsoft.Extensions.Options": "1.1.0" }, "tools": { "Microsoft.DotNet.Watcher.Tools": {