.net - .NET 代码如何知道它是否在 Web 服务器应用程序中运行?

标签 .net asp.net

我有一个库代码,它应该知道它是在 Web 服务器还是独立应用程序服务器的上下文中执行的。

显而易见的是检查应用程序配置文件的名称,如果它是 web.config - 那么这是一个 Web 服务器,否则 - 独立应用程序服务器。

另一种方法是在影子文件夹的路径中查找类似“临时 ASP.NET 文件”的内容。

但我不喜欢这两个,因为它们看起来太老套和脆弱。有没有一种健壮的方法来做我想做的事?

谢谢。

附言

可以定义一个专用的应用程序配置设置 - IsWebServer,但我更不喜欢它。

编辑:

在寻找另一个问题的解决方案时,我想我解决了这个问题 - 详细信息是 here

最佳答案

试图解决另一个问题,我找到了一个很好的解决方案。
有一个私有(private)方法System.Configuration.SettingsPropertyValue.IsHostedInAspnet ,这正是我需要的。作为一个私有(private)方法,我不想调用它(虽然我可以使用反射),但它的实现很简单:

private bool IsHostedInAspnet()
{
    return (AppDomain.CurrentDomain.GetData(".appDomain") != null);
}

(根据反射器)

看起来应用域数据中有一个特殊的键——“.appDomain”,它是在 ASP.NET Web 服务器中运行时设置的。

我会坚持这一点。

关于.net - .NET 代码如何知道它是否在 Web 服务器应用程序中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2091866/

相关文章:

asp.net - 如何处理 'The source contains no DataRows. ' 错误

javascript - 如何在 ASP MVC 设置中将 AngularJS 中的变量从一个 Controller 传递到下一个 Controller ?

c# - 使用 WebService 上传文件

c# - 将线程本地资源与并行 for 循环一起使用

c# - 从命令行打印 xhtml?

c# - .net 4.0 和 .net 4.0.3 有什么区别?

c# - 如何获得网络上可用的 SQL Server 列表?

c# - 死锁后重新提交事务

c# - 如何有选择地验证 WPF 中的表单?

c# - 如何从单选按钮列表中获取选定的单选按钮