web.config 转换元素无法通过 System.Configuration.ConfigurationManager 使用

Vin*_*cio 5 c# visual-studio-2010

我有一个使用 web.debug.config 文件转换的 web.config 文件。尝试通过 System.Configuration.ConfigurationManager.AppSettings 访问这些值并没有产生任何结果。

我的 web.config appSettings 是空的。

<configuration>
    <appSettings>
    </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我应用的 web.debug.config 转换。这是一个示例。

<configuration>
    <appSettings>
        <add key="CommonURL" value="localhost/mysite/" xdt:Transform="Insert" />
    </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这是尝试获取此值的代码,该值返回 null。

var cu = System.Configuration.ConfigurationManager.AppSettings["CommonURL"];
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?

rsb*_*rro 4

假设当System.Configuration.ConfigurationManager.AppSettings您从 Visual Studio 运行时没有产生任何结果,那么这就是预期的行为。您应该将CommonURLappSetting 添加到您的web.config文件中并将其中的条目更改web.debug.config为:

<add key="CommonURL" value="localhost/mysite/" 
    xdt:Transform="Replace" xdt:Locator="Match(key)" />
Run Code Online (Sandbox Code Playgroud)

这些更改将允许您获取在web.config从 Visual Studio 运行时指定的值,并且允许将该值替换为在web.debug.config执行转换时定义的值(例如,通过 Publish 函数或通过自定义MSBuild 脚本)。请记住,转换是在您发布时应用的,而不是在您开始运行调试或发布版本时应用的。web.config 文件中的值始终是受尊重的值。