Вы правы в том, что один и тот же сеанс используется для всех запросов к одному и тому же потоку. Это потому, что NSB не создает новые потоки для каждого запроса. Обходной путь - добавить пользовательский режим кэширования и очистить его после завершения обработки сообщений.
1. Расширить жизненный цикл хранилища потоков и подключить его к модулю сообщений
public class NServiceBusThreadLocalStorageLifestyle : ThreadLocalStorageLifecycle, IMessageModule
{
public void HandleBeginMessage(){}
public void HandleEndMessage()
{
EjectAll();
}
public void HandleError(){}
}
2. Сконфигурируйте вашу структуру структуры следующим образом:
For<<ISession>>
.LifecycleIs(new NServiceBusThreadLocalStorageLifestyle())
...
Надеюсь, это поможет!