Предположим простую HostBuilder
конфигурацию, как описано здесь .
Просто так:
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b => b
.AddAzureStorageCoreServices()
.AddAzureStorage()
.AddTimers())
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
Кажется, что в некоторых ситуациях могут возникать исключения, не внутри функций QueueTrigger
или TimerTrigger
напрямую (они корректно перехватываются), а в глобальной области видимости. Некоторые из них, которые я уже заметил, были HTTP 409 Conflict
откликами, TimeoutException
поднял и т. Д. c (они, кажется, происходят прямо перед входом в настоящую функцию, например, при доступе к очереди для чтения сообщений). И все приложение хоста закрыто. Webjob нужно перезапустить, а я этого не хочу. Дело в том, что я не хочу решать эти специфические c проблемы здесь.
Как я могу поймать исключение и предотвратить разрушение хоста? Кажется, что я могу даже не пытался поймать await host.RunAsync()
, catch
не сработало. Я добавил Logging непосредственно перед запуском хоста и внутри catch; Через некоторое время у меня появилось несколько журналов «Запуск ...», но не было журнала «Произошла ошибка».