如何识别代码是在ASP.Net或常规AppDomain下运行

时间:2014-12-22 16:18:21

标签: c# asp.net .net appdomain

我有一些基础设施代码可以在常规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;
    }
}

1 个答案:

答案 0 :(得分:1)

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

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