Как проверить, выполняется ли исполняемый код в IIS или NUnit? - PullRequest
2 голосов
/ 22 сентября 2011

Как я могу проверить, выполняется ли исполняемый код в IIS или NUnit? Причина, по которой я спрашиваю, заключается в том, что я хочу загрузить другую конфигурацию NHibernate в зависимости от того, работает ли мой сайт в NUnit.

var configuration = new Configuration();
if (IsRunningOnIIS)
{
    configuration.Configure();
}
else // if (IsRunningInNUnit)
{
    configuration.Configure("hibernate.cfg.test.xml");
}

1 Ответ

4 голосов
/ 22 сентября 2011

Это неправильный подход, и вы должны использовать внедрение зависимостей. Но так как вы спросили:

Process currentProcess = Process.GetCurrentProcess();
if(currentProcess.ProcessName == "w3wp") {
    // IIS
} else if (currentProcess.ProcessName == "nunit-agent") {
    // NUnit
}

или

if(HttpContext.Current != null) {
    // IIS
} else {
    // NOT IIS
}

Возможно, вам придется заменить 'nunit-agent' на имя вашего бегуна, если вы используете что-то вроде Resharper. В идеале, однако, вы должны ввести конфигурацию в код инициализации при запуске приложения (вручную или с помощью контейнера DI). Заказ Внедрение зависимостей в .NET book.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...