如何判断 WCF 服务是否托管在控制台应用程序中?

How can I tell whether a WCF service is hosted in a Console app?

我有一个正在开发的 WCF 服务,并且经常在 Windows 服务中的托管和控制台应用程序中的托管之间切换。服务和控制台应用程序共享一个配置文件,那么在我的 WPF 客户端中,我还能如何判断服务是否托管在控制台应用程序中?

bool windowsServiceHosted = !Environment.UserInteractive;

更 hacky(上面应该没有必要)

private bool? _ConsolePresent;
public bool ConsolePresent {
    get {
        if (_ConsolePresent == null) {
            _ConsolePresent = true;
            try { int window_height = Console.WindowHeight; }
            catch { _ConsolePresent = false; }
        }
        return _ConsolePresent.Value;
    }
}

bool windowsServiceHosted = !ConsolePresent;

如果您需要从客户端知道,那么您需要从使用上述服务器端之一的服务器公开一个 bool WindowServicesHosted 属性。