从第二个webconfig中读取AppSettings

5
我创建了第二个Web配置文件并将其放置在文件夹中:
~/Configuration/OtherConnections.config
我的配置文件如下:
<?xml version="1.0"?>

<configuration>
  <appSettings>
    <add key="serverurl" value="http://serverUrl" />
    <add key="UserName" value="myUser" />
    <add key="Password" value="XXXXXXX" />
  </appSettings>
</configuration>

当我试图读取其中一项的值时(例如:):
string connectionInfo = ConfigurationManager.AppSettings["UserName"];

我没有得到任何返回值。这是因为Web配置文件在某个文件夹中,还是其他什么原因导致的?


1
你是怎么想到你能做到这件事的? - Davin Tryon
你的 otherConnections.config 应该在你的 Web 表单的父目录中才能使用它。 - Gabriel GM
3个回答

5
我没有得到任何返回值。这是因为 web.config 文件在一个文件夹中吗...?不是因为文件夹,而是文件名。您可以使用"~/Configuration/Web.config",但是您必须显式打开它。
var config = WebConfigurationManager.OpenWebConfiguration("~/Configuration");

然后从中读取:

string url  = config.AppSettings.Settings["serverurl"].Value;

请注意,您无法指定(因此也无法更改)实际的web.config文件名。只能指定文件夹。

2

每个web文件夹只能有一个web.config文件。

但是,有两种选项:

  • 在IIS Manager中配置子文件夹作为新应用程序。它使用正在运行的应用程序的web.config文件。

  • 另一种选择是使用单个配置文件并添加<location>部分以将文件分段以不同方式处理某些文件夹或文件。(我建议了解更多信息here


一个 Web 应用程序可以为每个文件夹拥有 1 个 web.config。 - H H

0
您可以使用WebConfigurationManager方法访问多个配置文件。添加命名空间:
using System.Web.Configuration;

因此,要访问

../SomeProjectFolder/Environment/Web.config的 appSettings,您可以这样做:

var config = WebConfigurationManager.OpenWebConfiguration("~/SomeProjectFolder/Environment/");
string username = config.AppSettings.Settings["username"].Value;

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接