从类库中,我需要在运行时确定是否在ASP.NET应用程序或WinForms /控制台应用程序中运行。关于这个问题已经有
several
other
questions
asked,但是所有这些解决方案都需要添加对System.Web的引用。如果可能的话,当我运行我的控制台和WinForms应用程序时,我不想将System.Web程序集加载到内存中,只需一千万个代码。
解决方法
使用System.Diagnostics.Process.GetCurrentProcess()。ProcessName
如果你正在运行ASP.NET然后组装will be named thusly:
>如果您运行的是IIS 6.0或IIS 7.0,则名称为w3wp.exe。
>如果您运行的是较早版本的IIS,则该名称为aspnet_wp.exe。
另一个想法:如何使用AppDomain.CurrentDomain.GetAssemblies()API测试System.Web.dll的进程/应用程序域?