Я написал лазурное веб-задание, в котором есть timerTrigger. Статический метод вызывается каждую минуту, и он должен сделать запрос HTTP POST. Я хочу получить доступ к файлу appSettings.json в статическом методе timerTrigger. Как я могу получить к нему доступ?
Я вижу примеры, когда статический метод для QueueTrigger имеет ExecutionContext и TextWriter в качестве параметров. Пожалуйста, смотрите ниже пример:
public static void ProcessOrder(
[QueueTrigger("orders")] Order order,
TextWriter log,
ExecutionContext context)
{
log.WriteLine("InvocationId: {0}", context.InvocationId);
}
Как я могу добавить аналогичный текущий контекст выполнения и регистратор TextWriter в мой статический метод timerTrigger - «TimerTick»?
Ниже мой статический метод TimerTrigger:
public class Test
{
private static IConfiguration _config;
private static IHttpHandler _httpHandler;
public Test(IConfiguration configuration, IHttpHandler httpHandler)
{
_config = configuration;
_httpHandler = httpHandler;
}
[Singleton]
public static void TimerTick([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer)
{
string baseUrl = _config?.GetSection("WebJobConfiguration:url")?.Value;
string API = _config.GetSection("WebJobConfiguration:API")?.Value;
Console.WriteLine("URL: " + baseUrl + API);
_httpHandler.PostAsync(baseUrl + API, null);
}
}
=============================================== ========================
Обновление вопроса:
Я обновил метод, у которого есть TimerTrigger, чтобы он был:
public async static Task TriggerNotification([TimerTrigger("%Job%")]TimerInfo myTimer, ExecutionContext context)
{....}
Чтение% Job% из файла конфигурации с использованием NameResolver.
Когда я пытаюсь передать текущий контекст выполнения в методе TriggerNotification, я получаю следующую ошибку:
![enter image description here](https://i.stack.imgur.com/6qSEb.png)
Как мне это решить?
Веб-работа настраивается с помощью HostBuilder. Ниже приведен код. Я использую Azure WebJob версии 3.0.3.
static void Main(string[] args)
{
try
{
var builder = new HostBuilder()
.ConfigureAppConfiguration(SetupConfiguration)
.ConfigureLogging(SetupLogging)
.ConfigureServices(SetupServices)
.ConfigureWebJobs(webJobConfiguration =>
{
webJobConfiguration.AddTimers();
webJobConfiguration.AddAzureStorageCoreServices();
})
.UseSerilog()
.Build();
builder.Run();
} catch { ... }
}