Я понимаю, что конструктор контроллера не вызывается во время каждого веб-запроса. Предполагая, что это так, каков жизненный цикл контроллера? Is «построен» при запуске приложения, затем кэшируется и вызывается с запросомcontext, введенным в него с каждым веб-запросом?Жизненный цикл контроллера ASP.NET MVC
Просто, чтобы быть ясным, я не спрашиваю, как эмулировать поведение конструктора, я использую событие OnActionExecuting, чтобы инициировать действия, которые я обычно делал бы в конструкторе. Кроме того, я использую конструкторы на контроллерах для тестирования модулей и систем.
Спасибо!
Почему, правда? Зачем? –
Я прищурился и научил себя, почему это так и должно быть. Я создавал контроллеры с действиями и представлениями чтения/записи с использованием EF. Сгенерированный код создал частную переменную экземпляра для экземпляра контекста EF. Я думал, что буду умным и сделаю статическую переменную. Проблема в том, что если что-то вне сферы действия этого контроллера изменяет базу данных, статический контекст никогда не знает. Теперь я оставляю его как переменную экземпляра, и поскольку с каждым запросом создается новый экземпляр, контекст может видеть любые изменения в базе данных. – ThatAintWorking
В веб-API, где все состояние содержится в параметрах (то есть в функциональном стиле), нет причин (я могу видеть), почему контроллер нельзя использовать повторно. Он позолочен по дизайну. –