1

我正在开发一个 ASP.NET 项目,我需要在我的网络应用程序的 appSettings 部分添加一些设置。

现在这些设置越来越多,所以我想将它们组织在不同的文件中。我在应用程序的不同目录中创建了其他 web.config 文件,添加如下内容:

<?xml version="1.0"?>
<configuration>
  <system.web>
  </system.web>
  <appSettings>
    <add key="settingKey" value="settingValue" />
  </appSettings>
</configuration>

但是当我尝试通过 访问它们时ConfigurationManager.AppSettings["settingKey"],我得到了null.

那么,是否可以将设置拆分为不同的文件?是否有另一种逻辑组织应用程序设置值的方法?

4

2 回答 2

3

我知道这太旧了,甚至可能不适用于 .NET Core,但适用于来自 Google 并使用非 .NET Core json 配置文件的人。这是我通常做的...

我曾经configSources将所有配置设置从web.config. 这允许您通过提供相对位置来将特定的配置部分放到不同的文件中,例如,这是您configSource在配置部分(在根web.config文件中)声明 a 的方式...

<configuration>

  <log4net configSource="Config\debug\log4net.config" />
  <appSettings configSource="config\debug\settings.config" />
  <connectionStrings configSource="config\debug\connections.config" />    
  ...    
</configuration>

您可以随意命名这些文件,只需确保指定的路径和文件存在于解决方案中。这是 settings.config 文件的样子...

<?xml version="1.0"?>
<appSettings>
  <add key="webpages:Version" value="3.0.0.0" />
  <add key="webpages:Enabled" value="false" />
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  <add key="foo" value="bar" />
</appSettings>

现在,相对路径是相对于项目根目录的...

在此处输入图像描述

在上图中你可以看到我为不同的部署环境提供了两种不同的路径,那是因为很明显我的连接字符串和设置在生产中是不同的。

然后您可以使用配置转换,以便应用程序可以使用正确的配置文件,无论它是处于调试模式还是发布模式......

在此处输入图像描述

这是Web.Debug.config文件的样子...

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <log4net configSource="Config\debug\log4net.config" xdt:Transform="Replace" />
  <appSettings configSource="config\debug\settings.config" xdt:Transform="Replace" />
  <connectionStrings configSource="config\debug\connections.config" xdt:Transform="Replace" />
</configuration>

发布版本几乎相同...替换提供给 configSource 属性的路径。仅此而已。还有其他 web.config 元素支持 configSource 设置,例如许多system.serviceModel子元素。

于 2017-08-16T01:51:52.927 回答
0

如果当前执行的路径在该目录中,您将只能看到该目录中的 web.config 设置。

例如:/MyDirectory/web.config

仅当您加载如下页面时才可见:/Mydirectory/MyTestPage.aspx

您不会在此处看到 web.config 设置,例如:/OtherDirectory/MyTestPage.aspx

这篇文章可能会有所帮助: 在 asp.net 中创建自定义 .config 文件

于 2013-05-14T16:59:53.207 回答