使用WebConfigurationManager读取包含自定义节的web.config,可以';t负载

本文关键字:可以 负载 config web 读取 WebConfigurationManager 包含 自定义 使用 | 更新日期: 2023-09-27 17:58:47

我正在尝试组装一个小型助手工具来加密web.config文件。

Linqpad示例:

var path = @"F:'project'";
var wcfm = new WebConfigurationFileMap();
wcfm.VirtualDirectories.Add("/",new VirtualDirectoryMapping(path,true));
var config = Configuration.WebConfigurationManager.OpenMappedWebConfiguration(wcfm,"/");
var c = config.Sections["customGroup"];
c.SectionInformation.ProtectSection(null);
config.Save();

这引发了一个异常:

Could not load file or assembly 'customGroupAssembly' or one of its dependencies. 
The system cannot find the file specified

将程序集添加到LinqPad可修复errpr。我认为这是因为它现在是一个编译时引用。

将代码移到winforms应用程序中,重新引入了这个问题。

我正试图在运行时加载所需的程序集:

if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
    byte[] assemblyBuffer = File.ReadAllBytes(this.openFileDialog1.FileName);
    AppDomain.CurrentDomain.Load(assemblyBuffer);
    MessageBox.Show("Assembly loaded!");
}

然而,它似乎仍然找不到该文件。

有没有办法将自定义程序集加载到运行时应用程序域中,以便正确加载web配置?

使用WebConfigurationManager读取包含自定义节的web.config,可以';t负载

尝试附加程序集解析侦听器,我遇到过这样一个问题,运行时加载的程序集没有得到正确解决,需要手动解决:

AppDomain.CurrentDomain.AssemblyResolve += (s,arg)=>{ ... }

在(…)处的代码返回您想要根据在arg 中获得的名称解析的程序集