【发布时间】:2015-03-12 01:51:10
【问题描述】:
我有一个库代码,它应该知道它是在 Web 服务器或独立应用程序服务器的上下文中执行的。
首先想到的是检查应用程序配置文件的名称,如果它是 web.config - 那么这是一个 Web 服务器,否则 - 独立应用程序服务器。
另一种方法是在影子文件夹的路径中查找“临时 ASP.NET 文件”之类的内容。
但我不喜欢这两个,因为它们看起来太老套和脆弱。有没有一种稳健的方法来做我想做的事?
谢谢。
附言
可以定义一个专用的应用配置设置 - IsWebServer,但我更不喜欢它。
编辑:
在寻找另一个问题的解决方案时,我想我解决了这个问题 - 详细信息是 here
【问题讨论】:
-
为什么需要它来了解它的上下文?
-
我们为私有探测路径中的第一个文件夹分配了特殊含义。问题是,在 Web 服务器下,我们的逻辑应该会有所不同,因为 Web 服务器和独立应用程序之间的私有探测路径设置存在差异。
-
也许你应该把它存根,这样你就可以简单地将一个策略模式实现存储到你的框架中,这样框架本身就不需要任何特殊的代码,而是代码存在于你的 Web 应用程序中?
-
Lasse:好主意,不过,他可能需要在某些基础上决定使用它;基础应该是配置设置,恕我直言。
-
问题是它需要明确的配置设置。我希望避免它。