Как использовать службу конфигурации приложений Azure в Azure Function v1 (.NET Framework)
TL;DR. Как использовать идентификаторы управляемых служб в функции Azure v1 для настройки через конфигурацию приложения Azure?
Я пытаюсь использовать конфигурацию приложения Azure из функции Azure v1, используя.NET Framework. В идеале я хотел бы использовать ConfigurationBuilders.
Это будет означать использование SimpleJsonConfigBuilder
класс при работе на машине разработчика, но с использованием AzureAppConfigurationBuilder
когда размещается в Azure.
Он работает с нашими проектами веб-API, но я застрял, когда дело доходит до функций Azure.
Проблема, на мой взгляд, заключается в том, что узел функции Azure использует свой собственный файл web.config и поэтому не может быть изменен с помощью конфигурации, которую я использовал бы в веб-проекте.
<configuration>
<configSections>
<section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="Environment" type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Environment, Version=1.0.0.0, Culture=neutral" />
<add name="Json" optional="true" mode="Greedy" jsonFile="~/App_Data/settings.json" type="Microsoft.Configuration.ConfigurationBuilders.SimpleJsonConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Json, Version=1.0.0.0, Culture=neutral" />
<add name="AzureViaConnectionString" optional="true" mode="Greedy" connectionString="${AppConfigConnectionString}" type="Microsoft.Configuration.ConfigurationBuilders.AzureAppConfigurationBuilder, Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration" />
<add name="AzureViaMsi" optional="true" mode="Greedy" endPoint="${AppConfigEndpoint}" type="Microsoft.Configuration.ConfigurationBuilders.AzureAppConfigurationBuilder, Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration" />
</builders>
</configBuilders>
<appSettings configBuilders="Environment,Json">
...
Даже если я не использую конфигурацию xml, которая, как я предполагаю, будет невозможна, есть ли способ изменить ConfigurationManager.AppSettings
как это происходит с ConfigBuilders?
ConfigurationManager.AppSettings
только для чтения в точке, к которой я обращаюсь, поэтому я не могу обновить ее самостоятельно.
У нас есть IAppSettings
интерфейс, для которого я написал реализацию для использования API REST конфигурации приложения Azure. Однако это означает сохранение секрета, связанного со службой, в настройках приложения обычной функции, а не возможность использования идентификаторов управляемых служб.
Кроме того, во время выполнения функции требуются некоторые другие настройки, прежде чем она достигнет точки выполнения любого моего кода, а это означает, что я не могу переместить все настройки из стандартного местоположения.
Переход на функции Azure V2 в настоящее время невозможен.
1 ответ
1. Установите пакет Microsoft.Extensions.Configuration.AzureAppConfiguration
2. Создайте Function .net в VS и используйте код как показано ниже:
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
var builder = new ConfigurationBuilder();
builder.AddAzureAppConfiguration(Environment.GetEnvironmentVariable("ConnectionString"));
var config = builder.Build();
string message = config["TestApp:Settings:Messagejoey"];
return message == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + message);
}
3. Результат снимок: 4. Пакет, который я использовал:
Для более подробной информации, вы можете обратиться к этой статье (она также подходит для.net Framework).