【问题标题】:Update Application Settings: Azure Functions更新应用程序设置:Azure Functions
【发布时间】:2019-03-19 17:49:05
【问题描述】:

我正在尝试使用以下请求仅更新一个应用程序设置。我的设置正在正确更新,但我的所有其他应用程序设置都消失了。我在那里只看到一个具有我尝试更新的正确更新值的设置。我不想松动或更改所有其他应用程序设置。

我在这里遗漏了什么或者我做错了什么?

我正在关注以下给出的文章:

https://docs.microsoft.com/en-us/rest/api/appservice/webapps/updateapplicationsettings

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/appsettings

我正在使用他们的在线工具发送请求: https://docs.microsoft.com/en-us/rest/api/appservice/webapps/updateapplicationsettings

由于我使用的是在线工具,它正在生成授权令牌。但我想以编程方式进行。如果我能获得示例代码来生成令牌并更新应用程序设置,那就太好了。

授权:不记名
eyJ0eXAiOixxxxxxxeyE_rd3Cw
内容类型:application/json

【问题讨论】:

  • 你想要什么语言?
  • 感谢您的回复,我正在寻找 C# 代码。我还想再提一件事,我应该将其作为原始问题的一部分。我尝试更新应用程序设置的原因是我想以编程方式禁用我的天蓝色功能,以防网络中断或发生其他异常。我想知道是否有其他更简单/直接的方法来以编程方式禁用该功能(C#)。
  • 我在尝试使用 ARM 模板应用应用程序设置时遇到了类似问题。看来管理appconfig的API不是幂等的。 stackoverflow.com/questions/59383303/…我提出了一个针对 azure cli 的 github 问题 github.com/Azure/azure-cli/issues/11718

标签: azure azure-web-app-service


【解决方案1】:

我重现了您的问题,如果您想更新应用程序设置,您需要记下所有应用程序设置,否则它将被一个应用程序设置覆盖。

准备

1.Register an App registration 在 Azure Active Directory 中获取 appid 和 appsecret。请参考这个article

2.将注册的应用添加到Role assignmentsAccess control下。

这是您可以参考的 C# 代码示例。

var appId = "xxxxxxxxxxxxxxxxxxxx";
var secretKey = "xxxxxxxxxxxxxxxxxxxx";
var tenantId = "xxxxxxxxxxxxxxxxxxx";
var context = new AuthenticationContext("https://login.windows.net/" + tenantId);
ClientCredential clientCredential = new ClientCredential(appId, secretKey);
var tokenResponse = context.AcquireTokenAsync("https://management.azure.com/", clientCredential).Result;
var accessToken = tokenResponse.AccessToken;
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
    var baseUrl = new Uri($"https://management.azure.com/");
    var requestURl = baseUrl +
                    @"subscriptions/xxxxxxxxxxxxxxxxxxx/resourceGroups/xxxxxx/providers/Microsoft.Web/sites/xxxxxx/config/appsettings?api-version=2016-08-01";
    string body = "{\"kind\": \"webapp\",\"properties\": {\"WEBSITE_NODE_DEFAULT_VERSION\": \"6.9.1\",\"aaa\": \"bbb\"}}";
    var stringContent = new StringContent(body, Encoding.UTF8, "application/json");
    var response = client.PutAsync(requestURl, stringContent).Result;
}

结果如下:

【讨论】:

  • 我尝试更新应用程序设置的原因是我想以编程方式禁用我的天蓝色功能,以防网络中断或发生其他异常。我想知道是否还有其他更简单/直接的方法可以以编程方式(C#)禁用该功能。 ——
  • 这是你想要的article 吗?您也可以在host.json中设置它来设置您想要启用"functions": [ "QueueProcessor", "GitHubWebHook" ]等功能
  • 环境变量不会因为改变host.json而改变。它只是表明该功能已禁用,因为在 2.x 版本中,host.json 仅用于设计目的。它可能适用于 1.x 版本。我可以更改 host.json,但除了设计/外观更改之外,什么都没有真正改变。您提到的文章还讨论了如何从 azure 门户而不是 C# 程序更改变量值。
猜你喜欢
  • 2020-11-17
  • 1970-01-01
  • 2020-11-28
  • 2023-02-24
  • 1970-01-01
  • 2017-03-08
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多