Пользователь вводит выражение CRON из интерфейса.Приложение-функция должно обновить настройки приложения, чтобы отразить ввод данных пользователем.
Мой текущий подход
Функция TimerTrigger с schedule
appsetting
[FunctionName("Cleanup")]
public static async Task Run([TimerTrigger("%schedule%")]TimerInfo myTimer, ILogger log)
{
// Get the connection string from app settings and use it to create a connection.
var str = Environment.GetEnvironmentVariable("db_connection");
log.LogInformation($"db_connection : {str}");
}
Настройка schedule
appsetting через переменную окружения
[FunctionName("SetConfig")]
public static async Task<HttpResponseMessage> SetConfig([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequestMessage req)
{
HistoryLogDeleteConfigDto data = await req.Content.ReadAsAsync<HistoryLogDeleteConfigDto>();
Environment.SetEnvironmentVariable("schedule", data.Schedule);
return req.CreateResponse(HttpStatusCode.OK);
}
local.settings.json file
"Values": {
"db_connection": "Server=DESKTOP-DFJ3PBT;Database=CovalentLogger;Trusted_Connection=True;MultipleActiveResultSets=true",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"schedule": "*/20 * * * * *"
}
Тело запроса POSTMAN для обновления schedule
appsetting
{
"Schedule": "*/30 * * * * *"
}
Но не повезло,После отправки запроса от почтальона об обновлении настройки, если я получаю доступ к настройке приложения функции портала Azure, я все еще вижу старое значение.
Но если я запрашиваю переменную environmentmnet, как показано ниже Environment.GetEnvironmentVariable("schedule", EnvironmentVariableTarget.Process)
, я вижуновое выражение.Но в настройках приложения портала Azure он по-прежнему имеет прежнее значение.Таким образом, задание все еще выполняется по старому расписанию.
Где я ошибся?Спасибо