Aguacongas.DynamicConfiguration
2.0.0
dotnet add package Aguacongas.DynamicConfiguration --version 2.0.0
NuGet\Install-Package Aguacongas.DynamicConfiguration -Version 2.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Aguacongas.DynamicConfiguration" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Aguacongas.DynamicConfiguration --version 2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Aguacongas.DynamicConfiguration, 2.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Aguacongas.DynamicConfiguration as a Cake Addin #addin nuget:?package=Aguacongas.DynamicConfiguration&version=2.0.0 // Install Aguacongas.DynamicConfiguration as a Cake Tool #tool nuget:?package=Aguacongas.DynamicConfiguration&version=2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Aguacongas.DynamicConfiguration
Interfaces and services to dynamically configure .NET programs.
Usage
Setup
services.AddConfigurationServices(builder.Configuration, options => options.Provider = ((IConfigurationRoot)configuration).Providers.First(p => p is RedisConfigurationProvider));
You need a configuration provider able to persist the configuration like Aguacongas.DynamicConfiguration.Redis in your configuration pipeline to persist configuration changes.
Read/Write configuration
/// <summary>
/// Configuration controller
/// </summary>
[Route("api/[controller]")]
[ApiController]
[Authorize]
[Produces("application/json")]
public class ConfigurationController : ControllerBase
{
private readonly IConfigurationService _service;
/// <summary>
/// Initialize a new instance of <see cref="ConfigurationController"/>
/// </summary>
/// <param name="service">A <see cref="IConfigurationService"/> instance</param>
/// <exception cref="ArgumentNullException">If service is null</exception>
public ConfigurationController(IConfigurationService service)
{
_service = service ?? throw new ArgumentNullException(nameof(service));
}
// GET: api/<Configuration>
/// <summary>
/// Gets a configuration
/// </summary>
/// <param name="typeName">The configuration's assembly-qualified type name</param>
/// <param name="key">The configuration's key</param>
/// <returns>The configuration</returns>
[HttpGet("{typeName}")]
[HttpGet("{typeName}/{key}")]
[Authorize(Policy = DYNAMIC_CONFIGURATION_READER_POLICY)]
public Task<object> Get(string typeName, string? key)
=> _service.GetAsync(typeName, key);
// PUT api/<Configuration>
/// <summary>
/// Sets a configuration
/// </summary>
/// <param name="key">The configuration's key</param>
/// <param name="json">The JSON serialized value</param>
/// <returns></returns>
[HttpPut("{key}")]
[Consumes(RawRequestBodyFormatter.CONTENTTYPE)]
[Authorize(Policy = DYNAMIC_CONFIGURATION_WRITTER_POLICY)]
public Task PutCluster(string key, [FromBody] string json)
=> _service.SetAsync(key, json);
}
You can use Aguacongas.DynamicConfiguration.WebApi. It provides the same controller.
Subscribe to configuration changes
var autoReloadService = app.ApplicationServices.GetRequiredService<IAutoReloadConfigurationService>();
autoReloadService.SubscribeToChanges();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | 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 | 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.Extensions.Configuration (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- System.Text.Json (>= 8.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Aguacongas.DynamicConfiguration:
Package | Downloads |
---|---|
Aguacongas.DynamicConfiguration.Redis
Package Description |
|
Aguacongas.DynamicConfiguration.WebApi
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.0 | 4,489 | 11/24/2023 |
2.0.0-preview1-0080 | 765 | 10/4/2023 |
1.0.1 | 5,010 | 2/2/2023 |
1.0.1-preview1-0044 | 250 | 2/2/2023 |
1.0.1-preview1-0037 | 213 | 2/1/2023 |
1.0.0 | 8,498 | 12/25/2021 |
1.0.0-preview1-0057 | 268 | 12/23/2021 |
1.0.0-preview1-0056 | 256 | 12/23/2021 |