我正在开发一个ASP.NET项目,我需要在我的web-app的appSettings部分添加一些设置。
现在这些设置正在成长,所以我想将它们组织在不同的文件中。我在我的应用程序的不同目录中创建了其他web.config文件,添加如下内容:
<?xml version="1.0"?>
<configuration>
<system.web>
</system.web>
<appSettings>
<add key="settingKey" value="settingValue" />
</appSettings>
</configuration>
但是当我尝试通过ConfigurationManager.AppSettings["settingKey"]
访问它们时,我得到null
。
那么,是否可以将设置拆分为不同的文件?还有另一种逻辑组织应用设置值的方法吗?
答案 0 :(得分:1)
我知道这太旧了,可能甚至不适用于.NET Core,但适用于那些来自Google并使用非.NET Core json配置文件的人。这就是我通常做的事情......
我使用configSources
从web.config
中取出所有配置设置。这允许您通过提供相对位置来将特定配置部分指向不同的文件,例如,在配置部分(在根configSource
中声明web.config
的方式文件)...
<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
子元素。
答案 1 :(得分:0)
如果当前正在执行的路径在该目录中,您将只能看到目录中的web.config设置。
所以例如: /MyDirectory/web.config
仅在您加载以下页面时才可见: /Mydirectory/MyTestPage.aspx
您不会在此处看到web.config设置,例如: /OtherDirectory/MyTestPage.aspx
这篇文章可能有所帮助: Creating a custom .config file in asp.net