Я управляю сайтом, используя Kestrel.У меня есть IWebHost
, и я вызываю .Run ().
var app = host.Build();
app.Run();
Обычно это прекрасно работает, но у меня есть особая ситуация, которая меня беспокоит.Иногда указанный порт используется.Я знаю, что могу проверить, используется ли порт во время конфигурации / настройки, но всегда возможно, что кто-то будет использовать порт после моей проверки, но до того, как Kestrel будет слушать.Кроме того, я уверен, что есть и другие проблемы, которые могут привести к сбою строки app.Run ().
При сбое app.Run()
я хотел бы записать сообщение об ошибке в файл журнала.Проблема в том, что приложение кажется сбойным, и я не могу обработать исключение.
Например, я попробовал это:
var app = host.Build();
try
{
app.Run();
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
Но оно просто не срабатывает catch
code.
Я искал и нашел много примеров глобальной обработки исключений, которые, кажется, имеют дело с перенаправлением пользователя на страницу ошибки, и хотя я мог просто сделать это неправильно, у меня нет 'не удалось заставить работать ни один из этих примеров.
Сообщение об ошибке выглядит примерно так:
crit: Microsoft.AspNetCore.Server.Kestrel [0]
Невозможно запустить Kestrel.
Вместе с трассировкой стека.Я могу увидеть эту ошибку, запустив из командной строки, но мои пользователи не будут.Вот почему я действительно хочу быть в состоянии поймать это / записать это.
Может ли кто-нибудь помочь мне понять, что я делаю неправильно?