我在 IIS7 中有一些站点配置为作为域用户 (MYDOMAIN\someuser) 运行。
我正在使用 Microsoft.Web.Administration 命名空间来扫描我的服务器配置,但是当我点击这些“模仿者”站点之一时它会引发异常:
using (ServerManager sm = new ServerManager()) {
foreach (Site site in sm.Sites) {
foreach (Application app in site.Applications.Reverse()) {
foreach (VirtualDirectory vdir in app.VirtualDirectories.Reverse()) {
var config = app.GetWebConfiguration();
foreach (var locationPath in config.GetLocationPaths()) {
// error occurs in GetLocationPaths()
}
}
}
}
}
实际的错误信息是:
COMException was unhandled
Filename: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config
Line number: 279
Error: Failed to decrypt attribute 'password' because the keyset does not exist
似乎 IIS 正在存储在 applicationHost.config 中加密的 MYDOMAIN\someuser 密码,这在安全性方面非常好 - 但我不知道如何让 ServerManager 解密它。
关于如何允许 ServerManager 解密或只是告诉 IIS 以纯文本形式存储密码的任何提示?
顺便说一下,这是在 Windows 7 RC 下的 IIS7 上。