更新应用程序设置:Azure Functions

3
我试图使用以下请求仅更新一个应用程序设置。我的设置已成功更新,但我所有其他应用程序设置都消失了。我只看到一个具有正确更新值的设置。我不想失去或更改所有其他应用程序设置。
我在这里缺少什么或者我做错了什么?
我正在遵循下面给出的文章:https://learn.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://learn.microsoft.com/en-us/rest/api/appservice/webapps/updateapplicationsettings
由于我正在使用在线工具,它会生成授权令牌。但我想要通过编程方式来生成。如果可以提供生成令牌和更新应用程序设置的示例代码,那就太好了。

Authorization: Bearer
eyJ0eXAiOixxxxxxxeyE_rd3Cw
Content-type: application/json

注:Authorization为授权,Bearer后面的字符串为授权令牌。

你想用什么编程语言? - undefined
谢谢您的回复,我正在寻找C#代码。另外,我想提及一件我本应该在原始问题中包含的事情。我尝试更新应用程序设置的原因是,如果网络故障或发生其他异常,我希望能够以编程方式禁用我的Azure函数。我想知道是否有其他更简单/直接的方法来以编程方式禁用函数(使用C#)。 - undefined
我遇到了一个类似的问题,尝试使用ARM模板应用应用程序设置。似乎管理appconfig的API不是幂等的。https://dev59.com/yek5XIcBkEYKwwoY49gS我在Azure CLI的GitHub问题中提出了一个问题:https://github.com/Azure/azure-cli/issues/11718 - undefined
1个回答

0

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

准备工作

1. 在Azure Active Directory中注册一个应用程序注册并获取appid和appsecret。请参考这个文章

2. 将注册的应用程序添加到角色分配下的访问控制中。

enter image description here

这是一个你可以参考的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;
}

结果如下:

enter image description here


我试图更新应用程序设置的原因是,如果网络出现故障或发生其他异常,我想通过编程方式禁用我的 Azure 函数。我想知道是否有其他更简单/直接的方法来通过编程方式禁用函数(使用 C#)。 - undefined
这个文章是否符合您的需求?您还可以在host.json中进行设置,以启用您想要的函数,例如"functions": [ "QueueProcessor", "GitHubWebHook" ] - undefined
环境变量不会因为更改host.json而发生变化。它只是显示函数被禁用,因为在2.x版本中,host.json仅用于设计目的。它可能适用于1.x版本。我可以更改host.json,但实际上没有任何变化,除了设计/外观上的变化。此外,你提到的文章讲述了如何从Azure门户而不是从C#程序中更改变量值。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接