2011-06-08 3 views
2

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

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

ответ

2

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

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

Смежные вопросы