Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
380
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. using Microsoft.Azure.KeyVault;
  2. using Microsoft.Azure.Services.AppAuthentication;
  3. using Microsoft.Azure.WebJobs;
  4. using Microsoft.Azure.WebJobs.Hosting;
  5. using Microsoft.Extensions.Configuration;
  6. using Microsoft.Extensions.Configuration.AzureKeyVault;
  7. using Microsoft.Extensions.DependencyInjection;
  8. using Microsoft.Extensions.DependencyInjection.Extensions;
  9. using System;
  10. using System.Linq;
  11.  
  12. [assembly: WebJobsStartup(typeof(Startup))]
  13.  
  14. namespace MyServices.Functions
  15. {
  16. public class Startup : IWebJobsStartup
  17. {
  18. public static string Environment;
  19.  
  20. public void Configure(IWebJobsBuilder builder)
  21. {
  22. var config = ReplaceConfiguration(builder);
  23.  
  24. builder.Services.AddMyServices(config.GetSection("MySection"));
  25. }
  26.  
  27. private static IConfiguration ReplaceConfiguration(IWebJobsBuilder builder)
  28. {
  29. var baseConfig = builder.Services.FirstOrDefault(d => d.ServiceType == typeof(IConfiguration))?.ImplementationInstance as IConfigurationRoot;
  30. Environment = baseConfig?.GetValue<string>("ASPNETCORE_ENVIRONMENT") ?? "Development";
  31.  
  32. var config = new ConfigurationBuilder();
  33. if (baseConfig != null)
  34. config.AddConfiguration(baseConfig);
  35.  
  36. config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
  37. .AddJsonFile($"appsettings.{Environment}.json", optional: true, reloadOnChange: true);
  38.  
  39. if (Environment.Equals("Development", StringComparison.OrdinalIgnoreCase))
  40. {
  41. config.AddUserSecrets<Startup>();
  42. }
  43. config.AddEnvironmentVariables();
  44.  
  45. if (!Environment.Equals("Development", StringComparison.OrdinalIgnoreCase))
  46. {
  47. var vaultConfig = config.Build().GetSection("ConfigurationVault");
  48. var url = vaultConfig.GetValue<string>("AzureVaultUrl");
  49. var tokenProvider = new AzureServiceTokenProvider();
  50. var kvClient = new KeyVaultClient((authority, resource, scope) => tokenProvider.KeyVaultTokenCallback(authority, resource, scope));
  51. config.AddAzureKeyVault(url, kvClient, new DefaultKeyVaultSecretManager());
  52. }
  53.  
  54. var newConfig = config.Build();
  55. builder.Services.Replace(ServiceDescriptor.Singleton(typeof(IConfiguration), newConfig));
  56. return newConfig;
  57. }
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement