Storing database settings outside app.config
我一直在编写将在实时Web服务器上运行的c#exe,但是我希望能够在我们的登台服务器上对其进行测试。 由于登台服务器与本地主机具有不同的数据库设置(在app.config中),是否可以通过任何方法将连接字符串存储在app.config之外,以便轻松访问?
另外,是否可以存储数据库连接字符串,然后通过app.config访问它? 这听起来可能很奇怪,但是我正在使用CMS中的dll,该dll使用.config文件中的值。
在每个位置使用不同的app.config怎么样?
您可以将任何.NET配置节"外部化"到单独的文件中,并从
因此,在您的情况下,您在
1 | <connectionStrings configSource="connectionstrings.dev.config" /> |
然后为例如创建单独的配置DEV,TEST,PROD环境,名称不同。他们的内容将是:
1 2 3 4 | <?xml version="1.0"?> <connectionStrings> -- your connection string here, as normal </connectionStrings> |
您可以使用任意数量的这些独立文件,并且切换仅意味着更改主
取而代之的是,如何在
在开发过程中,该环境设置为" Dev"。
部署代码时,将
当您想用代码检索数据库设置时,首先要检查环境值,然后相应地选择数据库设置。
此主题的一种变体是在每台计算机的Windows中创建一个环境变量,并在您的代码中查询该变量。
您可以为连接字符串滚动自己的配置,在适合当前环境的情况下调用它,例如dev.config,qa.config,prod.config等,并将其名称保留到App.config中。
此外,您可以将记录添加到Machine.config中,例如称为Environment并在阅读App.config以确定环境配置时考虑它,即:
Machine.config:
1 | <environment name="Dev" /> |
App.config:
1 2 3 4 5 | <environments> <environment name="Dev" config="dev.config" /> <environment name="QA" config="qa.config" /> ... </environments> |
这取决于您如何使用它。它只是一个字符串,因此基本上您可以将其存储在所需的任何位置,但是如果您使用的某个库希望连接字符串位于app.config中,则您将不得不寻找一种不同的方式来向它提供字符串。
但是
您可以将其存储在所需的位置:在文本文件的环境变量中,将其作为命令行参数传递。
您只需要编写代码即可读取连接字符串并将其传递给您的dataaccess。
当您告诉我们如何访问数据库时,我可以向您展示如何传递连接字符串。
但是在每个环境中使用不同的配置文件可能更好。