web.debug.config 转换插入没有插入到 web.config

web.debug.config transform insert doesn't insert into web.config

也许我没有正确使用转换,我只是在学习它,但是当我像下面这样获取密钥时,运行在调试模式下,"stripeApiKey" 为空。 当我在调试模式下 运行 并将鼠标悬停在 "ConfigurationManager.AppSettings" 上时,我可以看到所有缓存在内存中的键,但我没有看到!有趣的!我在转换后的文件中看到它,但它没有加载到内存中。我错过了什么地方吗?

string stripeApiKey = ConfigurationManager.AppSettings["StripeApiKey"];

我在这里尝试插入 web.debug.config 文件中的 "StripeApiKey"

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
 <appSettings>
    <add key="StripeApiKey" value="sk_test_mytestkey123456" 
        xdt:Transform="Insert" 
        xdt:Locator="XPath(configuration/appSettings)" 
    />
 </appSettings>
</configuration>

进入我的 web.config 文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appSettings>
    </appSettings>
</configuration>

我也用 replace 尝试过,但没有成功,所以在层次结构的位置或其他方面一定有我遗漏的东西,我该如何调试它?

在正常调试会话期间不执行 XDT 转换。它们仅在您构建用于部署的项目时发生。您应该将调试值放在 Web.config 文件中,并将它们转换为 Web.Release.config 中的其他内容(或您拥有的任何其他构建配置)。语法也会更简单,使用 xdt:Locator="Match(key)",而不是使用 XPath。

或者,您可以使用 SlowCheetah 扩展,它添加了一个执行转换的构建任务。这也会在调试会话中进行转换。