Изменение настроек приложения веб-сайта 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 not found. Нужно ли мне устанавливать какие-либо другие пакеты 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 с лазурного портала? - 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 в веб-приложении (веб-сайты и / или веб-задания), вам необходимо настроить SSL, что немного сложно:

Использование библиотек управления Azure из веб-заданий Azure

person Thomas    schedule 08.12.2015