保存到 web.config,添加额外的"config"扩展名



我正在尝试在高级安装程序.MSI向导中构建一个 web.config 文件,其中包含用户连接字符串输入数据。

为什么这会导致文件web.config.config带有额外的config,我该如何避免它?

我想我的"打开"或"保存"不正确?

这是一个自定义操作,在.MSI内,我从高级安装程序运行,但我认为它应该不会产生任何影响。

[CustomAction]
public static ActionResult EncryptConnStr(Session session)
{
try
{
var path = Path.Combine(@"C:UsersradbyxDocuments", "web.config");
var connStr = BuildConnStr("foo", "foo", "foo", "foo");
Configuration config = ConfigurationManager.OpenExeConfiguration(path);
ConnectionStringsSection section = (ConnectionStringsSection)config.GetSection("connectionStrings");
section.ConnectionStrings.Add(new ConnectionStringSettings(GetConnectionStringName(), connStr));
// Encrypt
//section.SectionInformation.ProtectSection(ConnStrEncryptionKey);
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified, true);
return ActionResult.Success;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "Trace: " + ex.StackTrace, ex.Message);
throw;
}
}

此行为是由于ConfigurationManager.OpenExeConfiguration期望您提供可执行文件的路径而不是配置文件引起的。

要显式打开配置文件,请使用采用映射的重载:

var map = new ExeConfigurationFileMap { ExeConfigFilename = configFilePath };
configuration = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

相关内容

  • 没有找到相关文章

最新更新