如何将不同应用程序部分的全局配置设置封装在单个文件中?
我们有一个基于 IIS 的应用程序,其中包含不同的 Web 应用程序、一些第三方组件和多种服务。
服务器1
- 应用程序池1
- 应用1
- 应用程序池2
- 第三方应用
- 应用程序池1
Server2
- 应用程序池3
- 第三方应用 2
- 应用2
- Windows 服务
- CLR 存储过程
- 应用程序池3
目标是将所有环境相关设置(例如连接字符串、URLS 等)放入每个环境(开发、测试、集成、生产)的单个配置文件中)。应用程序相关的内容应该基于此“全局”设置文件和每个应用程序的单独设置文件。
我必须使用内置静态 System.Configuration.ConfigurationManager
类,因为一些第三方工具依赖于它。
我知道使用 System.Configuration.ConfigurationManager 可以采用以下方法:
- 单个文件(当前的冗余方法)
- Machine.config(过于全局)
- IIS 中的分层配置(不影响 Service 和 CLR Proc)
编辑: linkedConfiguration
元素仅影响加载程序绑定策略。
还有其他方法吗? 哪一个最好?
We have an IIS based application with different web apps, some third party components and several services.
Server1
- AppPool1
- App1
- AppPool2
- Third party app
- AppPool1
Server2
- AppPool3
- Third party app 2
- App2
- Windows Service
- CLR Stored Proc
- AppPool3
The goal is to put all environment relevant settings (such as connection strings, URLS, etc.) into a single configuration file per environment (dev., test, integration, production). The application relevant stuff should be based on this 'global' settings file and individual settings files per application.
I have to use the built-in static System.Configuration.ConfigurationManager
class because some third party tools depend on it.
I know of the following possible approaches using System.Configuration.ConfigurationManager
:
- Individual files (current, redundant approach)
- Machine.config (too global)
- Hierarchical configuration in IIS (doesn't affect Service and CLR Proc)
Edit:
The linkedConfiguration
element only affects loader binding policies.
Are there other methods?
Which one is best?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我假设您正在使用数据库。您可以在数据库服务器中创建一个数据库来存储共享或每个应用程序的配置值。然后,您需要在每个 web.config 中存储的唯一内容是“配置数据库”的连接字符串。
或者,也许您可以创建一个 Web 服务,以类似的方式提供配置值。
I'm going to assume you are using a database. You can create a DB in your database server to store configuration values, either shared or per-application. Then, the only thing you need to store in each web.config is a connection string to the "configuration database".
Or, perhaps you can create a Web Service that serves up configuration values in a similar way.