Различные SessionContexts для WCF и модульных тестов

Я запускаю свое приложение на IIS, чтобы проверить, работают ли мои службы должным образом. Кроме того, я запускаю модульные тесты операций других моих внутренних классов.

Ниже приведена моя фабричная конфигурация сеанса:

Fluently.Configure()
                .Database(MySQLConfiguration.Standard
                              .ConnectionString(myconnectionString)
                              .ShowSql()
                )
                .CurrentSessionContext<WcfOperationSessionContext>()
                //.CurrentSessionContext("call")
                .Mappings(m =>
                          m.FluentMappings
                              .AddFromAssemblyOf<DtoDifficulty>())
                .BuildSessionFactory();

Вы можете заметить закомментированную строку, используя //.CurrentSessionContext("call "). Когда я запускаю свой сервис в IIS, мне нужно использовать строку над ним .CurrentSessionContext(), когда я запускаю модульные тесты, .CurrentSessionContext ("call").

Есть ли способ узнать, какое дело запущено, и автоматически установить один из этих вариантов?

1 ответ

Я нашел способ выбрать правильный контекст. HttpContext.Current возвращает ноль в случае, если я запускаю свои модульные тесты. Когда я запускаю мои Сервисы, он возвращает экземпляр объекта.

Вот код:

var fluentConfiguration = Fluently.Configure().Database(MySQLConfiguration.Standard
                                                                .ConnectionString(myConnectionString)
                                                                .ShowSql()
                                                           );

var hasHttpContext = HttpContext.Current != null;

if (hasHttpContext)
    fluentConfiguration.CurrentSessionContext<WcfOperationSessionContext>();
else
    fluentConfiguration.CurrentSessionContext("call");

_sessionFactory = fluentConfiguration
                                    .Mappings(m =>
                                              m.FluentMappings
                                              .AddFromAssemblyOf<DtoDifficulty>())
                                    .BuildSessionFactory();
Другие вопросы по тегам