我对这个pattern的关注程度很近,可以用作我的示例代码:
使用选项和设置
在应用程序设置中定义的值在IConfiguration实例中可用,它使您可以在启动类中读取应用程序设置值。
您可以将IConfiguration实例中的值提取到自定义中 类型。将应用程序设置值复制到自定义类型可轻松实现 通过使这些值可注入来测试您的服务。设定已读取 配置实例中必须有简单的键/值对。
请考虑以下类,该类包含名为consistent的属性 带有应用设置。
value = max(value)
从Startup.Configure方法内部,可以从中提取值 使用以下命令将IConfiguration实例转换为自定义类型 代码:
public class MyOptions { public string MyCustomSetting { get; set; } }
Calling Bind会从 配置到自定义实例中。选项实例现在是 可在IoC容器中插入到函数中。
options对象作为函数的一个实例注入到函数中 通用
builder.Services.AddOptions<MyOptions>() .Configure<IConfiguration>((settings, configuration) => { configuration.Bind(settings); });
接口。使用Value属性访问 您的配置中找到的值。IOptions
有关ASP.NET Core的更多选项,请参阅 使用选项。
链接中唯一没有的是local.settings.json的示例:
using System;
using Microsoft.Extensions.Options;
public class HttpTrigger
{
private readonly MyOptions _settings;
public HttpTrigger(IOptions<MyOptions> options)
{
_settings = options.Value;
}
}
这将与MyOptions对象中的属性匹配。
正在创建options对象,并将其注入到我的函数中。但是,它并没有按照本文的指示来获取环境值。我看到了其他工作示例,这些示例通过直接绑定到设置文件来填充options对象。这不是生产解决方案。需要从环境中提取变量,以使它们在所有正在运行的情况下都能正常工作。
是否有人能够像本例中那样从环境中填充options对象?在FunctionStartup中可以使用环境吗?
我可以让Environment在函数本身中本地和在Azure上加载和提取设置。我想遵循此示例,并在FunctionStartup类中执行一次,然后将其注入到每个函数中。这种方法将依赖于Azure功能设置,而不必依赖只能在本地开发环境中使用的local.settings.json。
答案 0 :(得分:1)
答案是,这很完美。
我的实现无法正常运行b / c我没有正确创建JSON文件。它没有标记为在构建时要复制。我为该构建正确标记了该文件后,它便移至上方并创建了设置。
我现在正在测试以确保我们也从Azure设置中提取信息。
此实现应避免在启动时添加文件监视程序而造成的问题。