在app.config外部存储数据库设置

时间:2010-12-29 15:49:34

标签: c# app-config application-settings

我一直在编写一个将在实时Web服务器上运行的c#exe,但我希望能够在我们的登台服务器上进行测试。由于登台服务器在我的localhost中具有不同的数据库设置(在app.config中),有没有什么方法可以将连接字符串存储在app.config之外,以便我可以轻松访问它?

此外,是否可以存储数据库连接字符串,然后通过app.config访问它?这可能听起来很奇怪,但我使用的是来自使用.config文件中的值的CMS的dll。

6 个答案:

答案 0 :(得分:4)

如何在每个位置使用不同的app.config?

答案 1 :(得分:2)

您可以将任何.NET配置部分“外部化”为单独的文件,并从app.config引用它。

因此,在您的情况下,您会在app.config中找到类似的内容:

<connectionStrings configSource="connectionstrings.dev.config" />

然后为例如创建单独的配置DEV,TEST,PROD环境,具有不同的名称。他们的内容将是:

<?xml version="1.0"?>
<connectionStrings>
   -- your connection string here, as normal
</connectionStrings>

您可以使用任意数量的这些单独文件,而切换只意味着更改主app.config中的一行以引用相应的外部connectionstrings.ABC.config文件。

答案 2 :(得分:1)

而不是在app.config创建带有前缀的数据库设置,例如DevConnectionStringProdConnectionString。然后,再创建一个app.config元素,告诉您所在的环境。

在开发期间,该环境设置为“Dev”。 部署代码时,请将app.config中的environment元素更改为“Prod”。

如果要在代码中检索数据库设置,首先要检查环境值,然后相应地选择数据库设置。

此主题的一个变体是在每台计算机上的Windows中创建一个环境变量,并在您的代码中查询该变量。

答案 3 :(得分:0)

您可以将其存储在您想要的位置:在文本文件中,在环境变量中,将其作为命令行参数传递。

您只需编写代码来读取连接字符串并将其传递给您的数据访问。

当您告诉我们您如何访问数据库时,我可以向您展示如何传递连接字符串。

但也许每个环境使用不同的配置文件会更好。

答案 4 :(得分:0)

这取决于你如何使用它。它只是一个字符串,所以基本上你可以将它存储在你喜欢的任何地方,但如果你使用的是一些期望连接字符串在app.config中的库,你必须找到一种不同的方式来为它提供字符串。 / p>

然而,app.config文件很容易找到。它只是一个XML格式的文本文件,因此您可以使用任何文本编辑器进行编辑,例如记事本。它虽然已部署,但未命名为app.config,它从应用程序名称获取文件名,扩展名为.config

答案 5 :(得分:0)

您可以为连接字符串滚动自己的配置,并根据当前环境调用它,例如dev.config,qa.config,prod.config等,并将其名称保存到App.config中。

此外,您可以向Machine.config添加记录,例如调用Environment并在读取App.config时考虑它以确定环境配置,即:

Machine.config中:

<environment name="Dev" />

App.config中:

<environments>
    <environment name="Dev" config="dev.config" />
    <environment name="QA" config="qa.config" />
    ...
</environments>