Не закрытие контекста базы данных выделяется как очевидная ошибка в предоставленном вами коде. Оберните его в оператор using
, чтобы убедиться, что он правильно расположен.
Пока контекст существует, вы будете удерживать соединение SQL, которое является ограниченным ресурсом. Вы также будете тратить память, отслеживая изменения возвращенных вами объектов. Учитывая ваш код, в какой-то момент контекст должен собираться мусором, но это все еще может быть проблемой (И, независимо от того, является ли это проблемой, вы должны утилизировать контексты базы данных).
Попробуйте выполнить локальное тестирование, чтобы увидеть, можете ли вы воспроизвести проблему. Если вы можете, то используйте отладчик, чтобы выяснить проблему. Если нет, то вам, вероятно, нужно добавить ведение журнала, чтобы сузить проблему.
Вы также можете посмотреть на процесс IIS, чтобы узнать, использует ли он абсурдные объемы памяти, дескрипторы и т. Д. Также проверьте параметры IIS для производительности и повторного использования пула приложений, как предлагается в другом ответе здесь.