“Configuration”对象成功加载所有 appsettings.json 内容(在 Program.cs 中使用“CreateDefaultBuilder”)。相同的“Configuration”对象也可以在“Startup.cs”中访问(因为它是由框架本身注入的)。
现在,在“Startup.ConfigureServices”中,我想向“Configuration”对象添加更多条目,并在“Startup.Configure”和其他类(如控制器等)中访问它
简而言之,我想要如下的东西:
Configuration.add("MyNewKey", "MyNewValue"); //HOW TO DO THIS
Run Code Online (Sandbox Code Playgroud)
目前,我不想使用任何结构化类型。
这有可能吗?
Zhi*_* Lv 19
这有可能吗?
有可能的。我们可以在 Startup.ConfigureServices 方法中设置一个配置值,并在“Startup.Configure”和其他类(如控制器等)中访问它。您可以检查以下示例代码(Asp.net core 3.1 MVC 应用程序):
启动.cs:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
// using get and set accessor
public IConfiguration Configuration { get; set; }
public void ConfigureServices(IServiceCollection services)
{
Configuration["MyNewKey"] = "AAA"; //set the configuration value.
services.AddControllersWithViews();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
var result = Configuration["MyNewKey"]; //access the configuration value.
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
Run Code Online (Sandbox Code Playgroud)
HomeController.cs:
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IConfiguration _configuration;
public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
}
public IActionResult Index()
{
var value = _configuration["MyNewKey"];
return View();
}
Run Code Online (Sandbox Code Playgroud)
调试截图如下:
| 归档时间: |
|
| 查看次数: |
13228 次 |
| 最近记录: |