我有一个库代码,它应该知道它是在 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/