Я попал в эту не очень хорошую ситуацию .. Когда веб-приложение запускается - я настраиваю различные маршруты для своих служб, чтобы клиенты моего многопользовательского приложения подключались к:
private static void RegisterRoutes()
{
// Setup URL's for each customer
using (var cmc = new CoreModelContext())
{
foreach (var account in cmc.Accounts.Where(aa => aa.IsActive).ToList())
{
RouteTable.Routes.Add(
new ServiceRoute(account.AccountId + "/mobile",
new MyServiceHostFactory(), typeof(MobileService)));
}
}
}
Итак, когда мой сайт / служба запускается - он берет все учетные записи из базы данных и устанавливает маршруты.
Это единственная точка отказа прямо здесь. Иногда серверы перезагружаются в неправильном порядке, и если SQL Server не запущен - эта служба запускается в «странном» режиме.
Сегодня веб-служба перестала отвечать. Я проверил журналы - IIS восстановил пул по расписанию (настройки по умолчанию) и запустил другой работающий процесс Что-то не щелкнуло, и бум - сервер перестал отвечать. Маршруты не были зарегистрированы ...
Итак. У меня вопрос .. Как это исправить наилучшим образом? Я могу поместить маршруты в конфигурационный файл, но это будет означать, что я должен поддерживать эти идентификаторы в 2 местах. Возможно, не так уж и плохо, но я бы предпочел сделать это по-другому, если это возможно.
Можно ли программно попробовать перезапустить пул? Что происходит, когда исключение выдается в Application_Start
? Прямо сейчас я не поймаю это в ловушку.