ASP.NET — почему ошибка базы данных SP приводит к сбою пула приложений?

У меня есть приложение ASP.NET 4.0, которое подключается к MSSQL через WCF, а затем слои хранимых процедур.

По какой-то причине с этими уровнями всякий раз, когда я получаю доступ к отсутствующему SP или возвращаю сообщение об ошибке, это приводит к зависанию моего приложения, потому что пул приложений остановлен. Локально в режиме отладки это приводит к сбою веб-сервера.

Почему это происходит? Есть ли параметр, который я могу изменить, чтобы вызвать «лучшее» поведение, чем сбой или остановка пула приложений?

ОБНОВЛЕНИЕ: я обнаружил, что пул приложений останавливается, а не падает. И он останавливался в IIS7/Windows Server 2008 R2, потому что возникало слишком много ошибок за короткое время. Я изменил настройку пула приложений, чтобы предотвратить его остановку, и все работает хорошо. Ошибки были незначительными.


person pearcewg    schedule 12.08.2011    source источник


Ответы (3)


Пул приложений на самом деле не зависал, а останавливался.

Это было решение:

Отключите быструю защиту от сбоев для пула приложений.

http://weblogs.asp.net/nannettethacker/archive/2009/01/08/windows-2008-and-iis7-application-pool-stopped.aspx

person pearcewg    schedule 21.09.2011

Единственные проблемы, которые я вижу, чтобы сломать пулы, - это вызвать себя и создать stackoverflow. Поэтому проверьте свой код, если у вас есть такой вызов, когда возникает ошибка.

public string Text
{
   get {return Text;}
   set {Text = value;}
} 

Или, может быть, что-то вроде этого, когда он называет себя и падает.

protected override void OnLoad(EventArgs e)
{
  // call by mistake the OnInit and make close loop
  base.OnInit(e);
}

Например, возможно, когда у вас есть ошибка, страница, которую вы вызываете, снова вызывает ту же страницу ошибки в цикле.

person Aristos    schedule 12.08.2011

Скорее всего, IIS Health Monitoring перезапустил рабочий процесс, потому что он не ответил на пинг.

На моих машинах разработки я отключил это. В разделе «Дополнительные параметры» для пула приложений установите «Ping Enabled» = False в разделе «Модель процесса».

person snoopy-do    schedule 12.08.2011