Я пытаюсь выяснить, как настроить конфигурацию StructureMap3, которая работает в обоих WebAPI и в консольном приложении, например:StructureMap3 HybridHttpOrThreadLocalScoped с не HttpSessionState
For<ISession>().HybridHttpOrThreadLocalScoped().Use(p => p.GetInstance<TestingContainer>().GetSession());
Для консольных приложений, которые я хотел бы объект жить до тех пор, пока живет нить, и для веб-сайтов, пока живет http-сеанс.
Это возможно с веб-сайтов MVC, поскольку HybridHttpOrThreadLocalScoped использует HttpSessionState, чтобы определить, следует ли создавать новый экземпляр или повторно использовать существующий экземпляр.
У WebApi нет этого объекта HttpSessionState, и поэтому HybridHttpOrThreadLocalScoped не будет работать.
Если мне не понравилось консольное приложение, то я, вероятно, сконфигурировал бы структуру структуры с Transient() или AlwaysUnique или аналогичным.
Итак, что эквивалентно HybridHttpOrThreadLocalScoped, когда нет экземпляра HttpSessionState.
спасибо.
EDIT
-в переставить вопрос ...
В какой-то мере я согласен с вашей логикой, но что произойдет, если вы создадите два потока внутри одного и того же вложенного контейнера? Думаю, нам не нужна зависимость между вложенным контейнером и потоком, где мы должны помнить о создании нового вложенного контейнера для каждого нового потока или ...? –