我有一个库代码,应该知道它是在Web服务器或独立应用程序服务器的上下文中执行的.
想到的显而易见的是检查应用程序配置文件的名称,如果它是web.config – 那么这是一个Web服务器,否则 – 独立的应用程序服务器.
另一种方法是在shadow文件夹的路径中查找类似“Temporary ASP.NET files”的内容.
但我不喜欢这两个,因为它们看起来太脆弱和脆弱.有没有一种强有力的方法来做我想要的?
谢谢.
附:
可以定义一个专用的应用程序配置设置–IsWebServer,但我更不喜欢它.
编辑:
解决方法
为了解决另一个问题,我找到了一个很好的解决方案.
有一个私有方法System.Configuration.SettingsPropertyValue.IsHostedInAspnet,它完全符合我的需要.作为一个私有方法,我不想调用它(虽然我可以使用反射),但它的实现是微不足道的:
有一个私有方法System.Configuration.SettingsPropertyValue.IsHostedInAspnet,它完全符合我的需要.作为一个私有方法,我不想调用它(虽然我可以使用反射),但它的实现是微不足道的:
private bool IsHostedInAspnet() { return (AppDomain.CurrentDomain.GetData(".appDomain") != null); }
(根据反射器)
看起来应用程序域数据中有一个特殊键 – “.appDomain”,它在ASP.NET Web服务器中运行时设置.
我会坚持这一点.