Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Azure Function v1(.NET Framework)中使用Azure应用程序配置服务 TL;DR:如何使用Azure Function v1中的托管服务标识通过Azure应用程序配置进行配置?_.net_Azure Functions_Azure App Configuration - Fatal编程技术网

如何在Azure Function v1(.NET Framework)中使用Azure应用程序配置服务 TL;DR:如何使用Azure Function v1中的托管服务标识通过Azure应用程序配置进行配置?

如何在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项目中使

我正在尝试使用.NET Framework从Azure Function v1中使用Azure应用程序配置。理想情况下,我想利用

这意味着在dev机器上运行时使用
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应用程序配置。正是我需要的