首页 > 解决方案 > 更新应用程序设置:Azure Functions

问题描述

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

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

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

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

标签: azureazure-web-app-service

解决方案


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

准备

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

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;
}

结果如下:

在此处输入图像描述


推荐阅读