首页 > 解决方案 > web.debug.config 转换插入不会插入到 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>

我也尝试过替换,但没有运气,所以在层次结构的位置或其他方面一定有一些我遗漏的东西,我该如何调试呢?

标签: xmlasp.net-mvcweb-configweb.config-transform

解决方案


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

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


推荐阅读