В прошлый раз, когда я рухнул IIS, потому что я случайно смоделировал конструктор, чтобы он входил в бесконечный цикл.Если вы весь управляемый код, вам будет очень сложно аварийно завершить работу IIS, если вы не заполняете / заполняете память бесконечно.
Я бы порекомендовал вам запустить профилировщик для своего кода и получить помощь от инструментов анализа кода Visual Studio.Посмотрите, используете ли вы соединения, или у вас есть бесконечные петли, как у меня.Обычно это мы, а не фреймворк или аппаратное обеспечение:)
ps: если у вас есть одноразовые предметы, убедитесь, что вы используете блоки "using", лучший способ убедиться, что вы утилизируете вещи.(Анализ кода в конечном итоге укажет на них)
ps2: еще один хороший способ понять, что не так, может регистрировать критические события - или вещи, которые вас вызывают подозрения - в текстовом файле.Как вы, наверное, знаете, для dotnet доступно много библиотек журналов (я бы выбрал NLog )