Ninject Request Scope и порожденная нить - PullRequest
2 голосов
/ 08 июня 2011

У меня в приложении MVC настроены Ninject и NHibernate. У меня есть несколько запросов, и все, что они делают, это ставят в очередь какую-то работу, запускают поток для обработки очереди, а затем возвращают.

Мой сеанс NHibernate установлен на ReqeustScope. теперь мой вопрос: уничтожает ли Ninject мой объект Session, как только запрос заканчивается? Или это сохранит это для порожденных потоков?

Ответы [ 2 ]

2 голосов
/ 12 июня 2011

Ответ - да, Ninject попытается деактивировать объект сеанса в какой-то момент после сборки мусора HttpContext.Смотрите это сообщение в блоге:

http://kohari.org/2009/03/06/cache-and-collect-lifecycle-management-in-ninject-20/

2 голосов
/ 08 июня 2011

Я не очень знаком с NInject, но если он будет работать как другие контейнеры DI, я ожидаю, что ваш сеанс будет недоступен после завершения запроса. Если вам нужно запустить фоновый процесс в том же домене приложения, вы можете рассмотреть возможность предоставления двух путей для разрешения сеансов ISession, один из которых использует ThreadScope для доступа к фоновым потокам, а другой - RequestScope для веб-части приложения. Просто будьте внимательны, если вам нужно передать сущности, полученные с помощью веб-сеанса, в фоновый поток.

Если вы можете разделить фоновые процессы на другой домен приложения, вы также можете создать настраиваемую область, которая проверяет наличие HttpContext, а затем решает, какую область использовать.

...