我有一个控制台 capplication,它在托管一堆 web.config 文件的同一台计算机上运行。我需要控制台应用程序打开每个 web.config 文件并解密连接字符串,然后测试连接字符串是否有效。
我遇到的问题是 OpenExeConfiguration 需要一个 winforms 应用程序配置文件 (app.dll.config),而 OpenWebConfiguration 需要通过 IIS 运行。由于这是我的本地机器,我没有运行 IIS(我使用 Visual Studio 的内置服务器)。
有没有一种方法可以打开 web.config 文件,同时仍然可以获得 .NET 解密连接字符串的功能的稳健性?
谢谢
更新
如果您直接查询 IIS 或者是您想要查找 web.config 的相关网站,则 OpenWebConfiguration 有效。我想要完成的是相同类型的功能,但是从控制台应用程序打开我的同一台机器上的网站的 web.config 文件而不使用 IIS 查询,因为 IIS 没有在我的机器上运行。
请您参考如下方法:
好的,我明白了……编译并访问了它,所以我知道它可以工作……
VirtualDirectoryMapping vdm = new VirtualDirectoryMapping(@"C:\test", true);
WebConfigurationFileMap wcfm = new WebConfigurationFileMap();
wcfm.VirtualDirectories.Add("/", vdm);
// Get the Web application configuration object.
Configuration config = WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/");
ProtectSection(config, @"connectionStrings", "DataProtectionConfigurationProvider");
这假设您在名为 C:\Test 的目录中有一个名为 web.config 的文件。
我调整了@Dillie-O 的方法以将配置作为参数。
您还必须引用 System.Web 和 System.configuration 以及包含在您的 web.config 中设置的配置处理程序的任何 dll。