Должен ли образ жизни контроллера всегда быть временным в конфигурации Windsor для ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/1792283

Вопрос

Я столкнулся с проблемой, когда у меня был Html.DropDownList, который, по моему мнению, выполнял обратную отправку выбранного значения при первой отправке формы, но каждая последующая обратная передача отправляла только данные из начальной обратной передачи.Поэтому я добавил life="transient" к элементу компонента, где я настроил свой контроллер для замка Виндзор, что устранило проблему, но, конечно, заставило обратные передачи занимать больше времени, поскольку для каждого запроса создавался экземпляр нового контроллера.Учитывая приведенную выше информацию, какие идеи, предложения или решения могут помочь определить мой первоначальный вопрос об образе жизни контролера?Спасибо за всю помощь и поддержку!

Это было полезно?

Решение

Контроллеры MVC являются временными.Если подумать, это имеет смысл по нескольким причинам.Во-первых, если один экземпляр используется для обслуживания нескольких запросов и если несколько запросов одновременно поступают к одному и тому же контроллеру, вы столкнетесь с довольно странными условиями гонки.Во-вторых, HTTP по своей природе не имеет состояния, и запросы существуют независимо друг от друга.Это отражается на переходном образе жизни контролеров.

Другие советы

Transient, да, но ради интереса, почему бы не PerWebRequest вместо Transient?Я видел пару блогов, в которых используется образ жизни PerWebRequest, и не могу придумать причину, почему бы и нет.Есть ответы?

Я согласен с Дионом.Приземлился здесь в поисках решения этого же вопроса.Кажется, что PerWebRequest является более подходящим.

В зависимости от того, как вы интегрируете свой контейнер в MVC и WebApi, вы можете не давать указание Windsor освобождать зависимости, когда ваш контроллер больше не используется.

Если вы установите его на PerWebRequest, это будет автоматически освободить ваш контроллер и все его зависимости после завершения запроса

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top