如何在Azure Function v1(.NET Framework)中使用Azure应用程序配置服务 TL;DR:如何使用Azure Function v1中的托管服务标识通过Azure应用程序配置进行配置?
我正在尝试使用.NET Framework从Azure Function v1中使用Azure应用程序配置。理想情况下,我想利用 这意味着在dev机器上运行时使用如何在Azure Function v1(.NET Framework)中使用Azure应用程序配置服务 TL;DR:如何使用Azure Function v1中的托管服务标识通过Azure应用程序配置进行配置?,.net,azure-functions,azure-app-configuration,.net,Azure Functions,Azure App Configuration,我正在尝试使用.NET Framework从Azure Function v1中使用Azure应用程序配置。理想情况下,我想利用 这意味着在dev机器上运行时使用simplejsonconfigurationbuilder类,但在Azure中托管时使用AzureAppConfigurationBuilder 我已经让它与我们的Web API项目一起工作,但当涉及到Azure功能时,我被卡住了 在我看来,问题在于Azure函数主机正在使用自己的web.config,因此无法使用我将在web项目中使
simplejsonconfigurationbuilder
类,但在Azure中托管时使用AzureAppConfigurationBuilder
我已经让它与我们的Web API项目一起工作,但当涉及到Azure功能时,我被卡住了
在我看来,问题在于Azure函数主机正在使用自己的web.config,因此无法使用我将在web项目中使用的配置进行修改
...
即使我不使用xml配置(我认为这是不可能的),是否有办法像ConfigBuilders那样修改ConfigurationManager.AppSettings
ConfigurationManager.AppSettings
在我访问时是只读的,因此我无法自己更新它
我们有一个IAppSettings
接口,我已经为它编写了一个使用Azure应用程序配置RESTAPI的实现。然而,这意味着将与服务相关联的秘密存储在通常的功能应用程序设置中,而不是能够使用托管服务标识
此外,函数运行时在执行任何代码之前还需要一些其他设置,这意味着我无法将所有设置从标准位置移动
迁移到Azure Functions V2目前不可行。1.Install pacakge
Microsoft.Extensions.Configuration.AzureAppConfiguration
2.在VS中创建函数.net并使用以下代码:
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
var builder = new ConfigurationBuilder();
builder.AddAzureAppConfiguration(Environment.GetEnvironmentVariable("ConnectionString"));
var config = builder.Build();
string message = config["TestApp:Settings:Messagejoey"];
return message == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + message);
}
公共静态异步任务运行([HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]HttpRequestMessage请求,TraceWriter日志)
{
Info(“C#HTTP触发器函数处理了一个请求。”);
var builder=new ConfigurationBuilder();
builder.AddAzureAppConfiguration(Environment.GetEnvironmentVariable(“ConnectionString”);
var config=builder.Build();
string message=config[“TestApp:Settings:Messagejoey”];
返回消息==null
?req.CreateResponse(HttpStatusCode.BadRequest,“请在查询字符串或请求正文中传递名称”)
:req.CreateResponse(HttpStatusCode.OK,“Hello”+消息);
}
3.结果快照:
4.我使用的软件包:
有关更多详细信息,您可以参考这个(它也适用于.net framework)。谢谢Joey,这是一个很大的帮助。我不认为有一种方法可以完全替换V1函数中的配置,因为它是在执行任何函数代码之前使用的。e、 g.
AzureWebJobsDashboard
设置等。此外,我无法使用AddJsonFile
扩展来添加local.settings.json
,因为它会在所有设置中添加“Values:”前缀。所以,我写了自己的扩展来处理这个问题。因此,我们现在有了一个设置,在Azure中托管时,我们可以使用原始的local.settings.json
文件进行开发和Azure应用程序配置。正是我需要的