2014-12-20 2 views
0

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

Следующая моя сессия заводская конфигурация:

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

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

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

ответ

0

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

Вот код:

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(); 
Смежные вопросы