我在Azure上托管了一个ASP.NET Core 2应用程序,并在Azure门户中为我的应用程序添加了一个新的应用程序设置MyNewSetting
。
如何从控制器访问该设置?
我的代码如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<AppSecrets>(Configuration);
services.AddSingleton<ITableRepositories, TableClientOperationsService>();
//...
我的控制器:
public class RecordController : Controller
{
const int MyNewSetting = 7; // this one to replace with Azure Setting one
private readonly ITableRepositories repository;
public RecordController(ITableRepositories rep) {
repository = rep;
}
在这里,我可能需要添加FromServices
注射,但我不确定它是否会起作用...
修改
对于@dee_zg答案,以下代码可能会完成这项工作:
public class RecordController : Controller
{
int MyNewSetting = 7;
private readonly ITableRepositories repository;
public RecordController(ITableRepositories rep) {
repository = rep;
int myInt;
if (int.TryParse(System.Environment.GetEnvironmentVariable("MY_NEW_SETTING"),
out myInt)) {
MyNewSetting = myInt;
};
}
答案 0 :(得分:2)
您可以选择从AppSettings["your-key"]
集合中获取它们,也可以选择环境变量:Environment.GetEnvironmentVariable("your-key")
。
从那里,您可以将它们映射到您的自定义IOptions,并在您需要的任何地方注入。
答案 1 :(得分:0)
你可以做很多事情。
选项模式使用自定义选项类来表示一组相关设置。我们建议您为应用中的每个功能创建解耦类。
IOptionsSnapshot
支持在配置文件更改时重新加载配置数据。它的开销很小。将IOptionsSnapshot
与reloadOnChange: true
一起使用,选项将绑定到Configuration
并在更改时重新加载。
简而言之,请查看Configuration in ASP.NET Core,确定最符合您需求的方案并拥有它!
希望这有帮助。