【问题标题】:How to identify whether code runs under ASP.Net or regular AppDomain [duplicate]如何识别代码是在 ASP.Net 还是常规 AppDomain 下运行 [重复]
【发布时间】:2014-12-22 16:18:21
【问题描述】:

我有一些基础架构代码可以在常规 AppDomain 下运行,在其他情况下可以在 ASP.Net AppDomain 下运行。

这两种情况下代码的行为应该不同。

由于这是基础结构代码,我如何确定我在哪个类型的 AppDomain 下运行不依赖于 System.Web 命名空间 程序集?

例如:

public static string BasePath
{
    get
    {
        var isAspNetAppDomain = ...
        return isAspNetAppDomain 
            ? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin") 
            : AppDomain.CurrentDomain.BaseDirectory;
    }
}

【问题讨论】:

  • 检查 cmets 中的链接问题。
  • @Andrey 链接的答案需要依赖System.Web,这是我做不到的。我已编辑问题以反映此约束。
  • 这个答案被批评为不可靠,这个更好,没有依赖关系:(AppDomain.CurrentDomain.GetData(".appDomain") != null)
  • 无论如何,最好的方法是通过构造函数从最高级别传递此信息。喜欢new YourClass(Env.AspNet)。调用代码总是知道的。

标签: c# asp.net .net appdomain


【解决方案1】:

一般来说,这种事情是一个糟糕的设计。如果这两种情况下的行为不同,那么它实际上要么是两个单独的方法,要么是一个带有 bool 参数的方法:

public static string GetBasePath(bool isAspNetAppDomain)
{
        return isAspNetAppDomain 
            ? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin") 
            : AppDomain.CurrentDomain.BaseDirectory;
}

【讨论】:

  • 问题是关于如何弄清楚isAspNetAppDomain是什么...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 2019-08-08
  • 2010-10-22
  • 1970-01-01
相关资源
最近更新 更多