Различные 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
Есть ли способ узнать, какое дело запущено, и автоматически установить один из этих вариантов?
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();