如何从 Web.config 获取键的转换值
How to get transformed value of key from Web.config
我的 Web.config
文件中有以下密钥:
<appSettings>
<add key="ImageBucketName" value="dev" />
</appSettings>
我的 Web.Release.Config
文件中有以下转换:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="ImageBucketName" value="live" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
</configuration>
但是,当我 运行 我的 Visual Studio 2013 应用程序并尝试从我的控制器检索密钥的值时,我总是得到密钥的未转换版本。
// Get the AWS bucket name from the config file
var imageBucketName = ConfigurationManager.AppSettings["ImageBucketName"];
与以下结果相同:
// Get the AWS bucket name from the config file
var imageBucketName = WebConfigurationManager.AppSettings["ImageBucketName"];
当我运行将应用程序设置为 'Release' 时,如何确保获得正确的 发布 版本的密钥?
当 运行 直接在 Visual Studio 中时,将不会应用转换 - 您至少需要先部署到某个地方(即使是在本地)。
基本原理类似于适用于不同环境的变换。基础 web.config 文件代表本地(开发)环境,而 .release
转换适用于生产(或类似生产)环境。
如果您只想查看正在运行的转换,运行 一种简单的方法是通过 https://ctt.codeplex.com/
提供的命令行 XDT 工具
我的 Web.config
文件中有以下密钥:
<appSettings>
<add key="ImageBucketName" value="dev" />
</appSettings>
我的 Web.Release.Config
文件中有以下转换:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="ImageBucketName" value="live" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
</configuration>
但是,当我 运行 我的 Visual Studio 2013 应用程序并尝试从我的控制器检索密钥的值时,我总是得到密钥的未转换版本。
// Get the AWS bucket name from the config file
var imageBucketName = ConfigurationManager.AppSettings["ImageBucketName"];
与以下结果相同:
// Get the AWS bucket name from the config file
var imageBucketName = WebConfigurationManager.AppSettings["ImageBucketName"];
当我运行将应用程序设置为 'Release' 时,如何确保获得正确的 发布 版本的密钥?
当 运行 直接在 Visual Studio 中时,将不会应用转换 - 您至少需要先部署到某个地方(即使是在本地)。
基本原理类似于适用于不同环境的变换。基础 web.config 文件代表本地(开发)环境,而 .release
转换适用于生产(或类似生产)环境。
如果您只想查看正在运行的转换,运行 一种简单的方法是通过 https://ctt.codeplex.com/
提供的命令行 XDT 工具