Променете настройките на приложението за уебсайт на Azure от код

Възможно ли е да промените настройките на приложението за уебсайт от самото приложение?

Това не е предназначено да бъде ежедневна операция, а опция за преконфигуриране на самообслужване. Лице, което не е програмист, може да промени конкретна настройка, което трябва да доведе до рестартиране, точно както мога да направя ръчно на страницата за конфигурация на уебсайта (раздел за настройки на приложението)


person Diego Mijelshon    schedule 26.05.2014    source източник


Отговори (4)


Можете също да използвате Azure Fluent Api.

using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;

...

public void UpdateSetting(string key, string value)
{
    string tenantId = "a5fd91ad-....-....-....-............";
    string clientSecret = "8a9mSPas....................................=";
    string clientId = "3030efa6-....-....-....-............";
    string subscriptionId = "a4a5aff6-....-....-....-............";

    var azureCredentials = new AzureCredentials(new
      ServicePrincipalLoginInformation
    {
        ClientId = clientId,
        ClientSecret = clientSecret
    }, tenantId, AzureEnvironment.AzureGlobalCloud);

    var _azure = Azure
   .Configure()
   .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
   .Authenticate(azureCredentials)
   .WithSubscription(subscriptionId);

    var appResourceId = "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Web/sites/xxx"; //Get From WebApp -> Properties -> Resource ID

    var webapp = _azure.WebApps.GetById(appResourceId);

    //Set App Setting Key and Value
    webapp.Update()
        .WithAppSetting(key, value)
        .Apply();
}
person Niall    schedule 01.05.2018
comment
Получих грешка по време на компилиране на ред var _azure = Azure.Configure()... Azure не е намерен, трябва ли да инсталирам други nuget пакети, за да я разреша? - person prog1011; 06.01.2020
comment
Не трябва да имате нужда от нищо друго освен препратките, които написах по-горе. - person Niall; 19.03.2020

Не беше толкова трудно, след като намерих подходящата библиотека, за да го направя, Microsoft Azure Web Библиотека за управление на сайтове.

var credentials = GetCredentials(/*using certificate*/);
using (var client = new WebSiteManagementClient(credentials))
{
    var currentConfig = await client.WebSites.GetConfigurationAsync(webSpaceName,
                                                                    webSiteName);
    var newConfig = new WebSiteUpdateConfigurationParameters
                    {
                        ConnectionStrings = null,
                        DefaultDocuments = null,
                        HandlerMappings = null,
                        Metadata = null,
                        AppSettings = currentConfig.AppSettings
    };
    newConfig.AppSettings[mySetting] = newValue;
    await client.WebSites.UpdateConfigurationAsync(webSpaceName, webSiteName,
                                                   newConfig);
}
person Diego Mijelshon    schedule 26.05.2014
comment
Можете ли да ме насочите откъде мога да получа webSpaceName и webSiteName от портала на Azure? - person prog1011; 06.01.2020
comment
@Diego Mijelshon, знаете ли дали бихме могли да актуализираме Общите настройки до Java. - person Darey; 18.10.2020

Прочетохте ли REST API за управление на услуги? В документацията се споменава, че ви позволява да извършвате програмно повечето действия, които са достъпни чрез портала за управление.

person Jamie Edge    schedule 26.05.2014
comment
Това обаче ми помогна да стигна до библиотеките за управление, които сега проверявам - person Diego Mijelshon; 26.05.2014
comment
Изглежда, че това вече се поддържа от REST API - docs. microsoft.com/en-us/rest/api/appservice/webapps/ - person abrown; 21.11.2018

В допълнение към отговора на Диего, за да използвате Azure Management Librairies в рамките на WebApp (WebSites и/или WebJobs), трябва да конфигурирате SSL, което е малко сложно:

Използване на библиотеки за управление на Azure от Azure Web Jobs

person Thomas    schedule 08.12.2015