如果程序集 (.dll) 找不到 web.config 文件,我该如何正确设计故障转移逻辑?
背景:我已经将我们的网站代码很好地模块化为两个不同的 .dll。为了简单起见,我们称它们为:
- 网站.dll
- 通用引擎.dll
网站代码和 .aspx/.ascx 文件调用通用引擎库来处理所有数据层内容。对于连接字符串,commonengine 反过来不查看 app.config,而是查看网站的 web.config 文件(这是我自己的偏好——我更喜欢将我们的生产常量全部放在一个地方)。网站代码偶尔(很少)需要访问该 web.config 文件中的内容。到目前为止一切都很好(即使不完全纯净)。
麻烦来了。我写了第三个模块。它是一个 Windows 服务(具体来说,它是一个 POP3 检查器/处理器——处理邮箱请求并将 commonengine.dll 用于某些数据层内容)。
问题是 Windows 服务调用 commonengine.dll,而 commonengine.dll 无法在任何地方找到 web.config,因为毕竟它是一个 Windows 服务 (.exe),并不存在于网站目录中。
当找不到 web.config 文件时,使用 app.config 的正确测试/逻辑是什么?任何 ASP.NET 配置专家都可以在这里给我一些指导吗?非常感谢。
最佳答案
我从未明确读取 Web.config,我使用 System.Configuration 类来读取它(例如 System.Configuration.ConfigurationStrings["conn name"])。它将自动转到 ASP.NET 应用程序中的 Web.config 和 EXE 中的 app.config。
当然,您仍然必须考虑到配置部分可能丢失的事实。
关于c# - 程序集、Web.config 和 App.Config——构建故障转移逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345697/