ASP.NET - почему ошибка базы данных SP вылетает из пула приложений? - PullRequest
1 голос
/ 13 августа 2011

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 21 сентября 2011

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

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

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

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

0 голосов
/ 13 августа 2011

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

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

0 голосов
/ 13 августа 2011

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

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);
}

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

...