IIS7 / Win7 - пул приложений внезапно выходит из строя - PullRequest
1 голос
/ 14 января 2010

Спустя почти 5 месяцев с этой конфигурацией я получаю серию:

"Пул приложения, обслуживающего процесс" Classic .NET AppPool ", столкнулся с фатальной ошибкой связи со службой активации процессов Windows. Идентификатор процесса был" 1640 "."

Это приводит к:

Пул приложений "Classic .NET AppPool" автоматически отключается из-за серии сбоев в процессе (ах), обслуживающих этот пул приложений.

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

Я недавно (2 недели назад) начал добавлять Entity Frameworks в мое решение. Прямо перед тем, как это произошло, я получил ошибку «out of stack space» из-за сообщения о вызове с собственной ссылкой. Я не могу найти подобные вызовы в коде, который я написал, и подозреваю, что EF, возможно, добавил соединение в мою простую (3 таблицы) модель, которая неверна.

Есть идеи, с чего начать искать? Что может вызвать сбой AppPool?

ТИА


ПРИМЕЧАНИЕ :

Произошло необработанное исключение типа «System.StackOverflowException» в mscorlib.dll

У меня есть внешний объект, который вызывает этот метод для получения одной записи:

public static AutoNegotiationDetails GetAutoNegotiationByCompany(Guid companyId)
{
    return RivWorks.Controller.Negotiation.GetAutoNegotiationByCompany(companyId);
}

Этот метод вызывает в:

internal static AutoNegotiationDetails GetAutoNegotiationByCompany(Guid companyId)
{
    var autoNeg = from a in _dbRiv.AutoNegotiationDetails where a.CompanyId == companyId select a;
    var ret = autoNeg.FirstOrDefault();
    return ret;
}

Пройдя по нему, я могу установить точку останова внутри первого метода, перейти ко второму методу, просмотреть заполненную запись, вернуться к первому методу и, наконец, выйти из метода. В этот момент моя среда IDE блокируется на несколько секунд, пока не получит ошибку StackOverflow.

Для более точной картины всей системы:

  • Запуск WebOrb30 на компьютере с IIS.
  • В VS IDE -> Присоединение к процессу (INETINFO.exe)
  • Войдите в WebOrb30 -> Консоль управления -> Детализация до точки входа в службу -> Введите CompanyID в поле ввода -> Нажмите Invoke
  • Точка останова попадания в VS IDE -> (см. Выше)

Примечание

Похоже, это может быть вызвано другой проблемой в EF. См. C # - Entity Framework - Необработанное исключение типа 'System.StackOverflowException' произошло в mscorlib.dll для дальнейшего разъяснения.

Ответы [ 2 ]

0 голосов
/ 19 января 2010

Из-за ошибки в моей Entity Framework я получал циклический вызов в одном из моих отношений. Это приводило к переполнению стека, которое сообщалось WebOrb как общая ошибка, и WebOrb останавливался, вызывая сбой пула приложений. (Я все еще не совсем понимаю все особенности). Когда я перестроил свою модель EF без отношений, поведение исчезло. (Вздыхает /)

EF будет другим вопросом (или серией вопросов).

0 голосов
/ 14 января 2010

Возможно, у вас два приложения / сайта, использующих один пул приложений, но приложения / сайты работают под разными версиями .net.

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

...