Обновить настройки приложения: функции Azure - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь обновить только одну настройку приложения, используя запрос ниже.Мои настройки обновляются должным образом, но все остальные настройки приложения исчезают.Я вижу только одну настройку с правильным обновленным значением, которое я пытался обновить.Я не хочу терять или изменять все остальные настройки приложения.

Что мне здесь не хватает или что я делаю неправильно?

Я следую приведенной ниже статье:

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

1 Ответ

0 голосов
/ 19 марта 2019

Я воспроизвожу вашу проблему, и если вы хотите обновить настройки приложения, вам необходимо записать все настройки приложения , в противном случае оно будет переопределено одной настройкой приложения.

Подготовка :

1. Register an App registration в Azure Active Directory и получение appid и appsecret.Пожалуйста, обратитесь к этой статье .

2.Добавьте зарегистрированное приложение в Role assignments под Access control.

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

...