如何确定.NET代码是否在ASP.NET进程中运行?

jr.*_*jr. 15 .net c# asp.net

我有一个通用类的实例,它将在ASP.NET和独立程序下执行.此代码对正在运行的进程很敏感 - 也就是说,如果在ASP.NET下运行,则不应调用certin方法.如何确定代码是否在ASP.NET进程中执行?

我目前使用的解决方案将在下面解答.


我希望有人会就为什么这个问题得到落实和/或提出更好的方式来提出评论!我只能假设至少有些人已经看过这个问题并说"什么是白痴,ASP.NET代码是.NET代码".

ste*_*son 12

如果您使用异步方法,则HttpContext.Current在ASP.NET中也可以为null,因为异步任务发生在不共享原始线程的HttpContext的新线程中.这可能是您想要的,也可能不是,但如果没有,那么我相信HttpRuntime.AppDomainAppId在ASP.NET进程中的任何位置都是非null,而在其他地方则为null.


jr.*_*jr. -1

这就是我对这个问题的回答。

首先,确保您的项目引用 System.Web 并且您的代码文件是“using System.Web;”。

public class SomeClass {

  public bool  RunningUnderAspNet    { get; private set; }


  public SomeClass()
    //
    // constructor
    //
  {
    try {
      RunningUnderAspNet = null != HttpContext.Current;
    }
    catch {
      RunningUnderAspNet = false;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)