如何检查执行代码是在IIS还是NUnit中运行?

时间:2011-09-22 02:45:51

标签: c# .net iis nunit

如何检查执行代码是在IIS还是NUnit中运行?我问的原因是因为我想根据我的网站是在线还是在NUnit中运行来加载不同的NHibernate配置。

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

1 个答案:

答案 0 :(得分:4)

这是一种错误的方法,你应该使用依赖注入。但既然你问:

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

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

如果你使用像Resharper这样的东西,你可能需要用你的跑步者的名字替换'nunit-agent'。理想情况下,您可以在应用程序启动时(手动或使用DI容器)将Configuration注入初始化代码中。订购Dependency Injection in .NET本书。