Оказывается, что наиболее вопиющей проблемой было несколько страниц с проблемами, которые забивали базу данных тысячами запросов SQL. Код выглядел относительно невинно, только некоторые сетки данных. Однако C # / LINQ был слишком мощным для его (или нашего) собственного блага: если вы привязываете сетку к таблице, но сетка хочет отобразить поле из другой таблицы, связанной через внешний ключ, она это делает! Но он делает это, выполняя zillion запросов:
SELECT ... FROM other_table WHERE Id = 1
...
SELECT ... FROM other_table WHERE Id = 2
...
SELECT ... FROM other_table WHERE Id = 3
...
SELECT ... FROM other_table WHERE Id = 4
...
и т. Д., Убедившись, что набор данных, связанный с элементом управления, содержит все необходимые данные без запроса базы данных, проблемы заметно уменьшились.
Теперь вернемся к профилированию ...