У меня был код в приложении ASP.NET, запущенном на сервере Server 2008 R2 + IIS 7.5. Всякий раз, когда я загружал определенную страницу, она зависала навсегда и отправляла IIS на 100% использование ЦП. В конечном итоге я обнаружил проблему.
public string Comments
{
get { return this.Comments; }
}
Упс - должно быть return this.Photo.Comments
. Итак, мой вопрос: почему .NET не генерировал исключение StackOverflowException, но вместо этого IIS запускался на 100% -ном процессоре намного дольше, чем следовало бы. По моему опыту программирования с .NET требуется несколько секунд или меньше, чтобы получить исключение StackOverflowException при выполнении чего-то подобного выше. Итак, как он мог работать в течение почти 30 минут на IIS?