2010-11-01 2 views
3

Когда я настраиваю свое время службы ISession на «HTTP-запрос» (экземпляр класса InstancePerLifetimeScope в Autofac, который я использую), профилировщик NHibernate сообщает мне, что мой сеанс используется по потокам, что, скорее всего, Жук. Что происходит? Я привык думать, что я должен обладать единицей работы для http-запроса, но кажется, что сеанс действительно используется через threds.Использование ISIBernate ISession и безопасность потоков

По существу, этот запрос «ISession per HTTP» конфликтует с предупреждениями профилировщика NHibernate. Где я ошибаюсь?

UPDATE: У меня есть ContainerDisposalModule в моем Web.config, так располагающие работы, как это должно

+1

Silent downvoters, пожалуйста, прокомментируйте ваше решение, спасибо! – Valentin

+1

+1 для противостояния вниз. Это вполне разумный вопрос. – jammycakes

+0

У вас есть ContainerDisposalModule в правильном разделе Web.config для вашей версии IIS? Другой поток может быть финализатором. –

ответ

1

IIS (как и большинство веб-серверов) использует несколько потоков для обслуживания запросов, так что это, вероятно, не ошибка в вашем приложение, и вы можете спокойно игнорировать предупреждения.

См. Также this question.

+0

Я знаю, что asp.net выполняет каждый запрос в потоке, взятом из пула потоков. Но AFAIK не должен использовать несколько потоков в одном запросе. Каждый запрос является однопоточным внутри, не так ли? – Valentin

+0

@Valentin Vasiliev: Он может перекликать потоки, если его асинхронно - не считать, что вся работа обрабатывается в той же теме –

+0

«Если ее асинхронный» - что такое асинхронный? Я не использую асинхронные контроллеры. И я предполагаю, что при создании экземпляра контроллера его метод действия вызывается в одной и только потоке. Таким образом, вопрос по-прежнему сохраняется, как возможно, что NH prof обнаруживает использование по потокам в * одном экземпляре asp.net mvc-контроллера? – Valentin

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