也许我没有正确使用转换,只是在学习它,但是当我在调试模式下获取如下所示的键时,“ 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进行操作,但是没有运气,所以就层次结构的位置而言,肯定有某些我所缺少的东西,该如何调试呢?
答案 0 :(得分:1)
XDT转换在常规调试会话期间不执行。它们仅在您构建要部署的项目时发生。您应该将调试值放入Web.config文件中,并将其转换为Web.Release.config(或您拥有的任何其他构建配置)中的其他内容。使用xdt:Locator="Match(key)"
而不是使用XPath,语法也会更容易。
或者,您可以使用SlowCheetah扩展名,该扩展名添加了执行转换的构建任务。这也将在调试会话中进行转换。