我正在尝试使用 IIS 7 管理 API,但遇到安全问题。我的应用程序是在 .NET 4(集成管道)上运行的常规 ASP.NET 站点。该计算机是 Windows 7 x64(应用程序池是默认的,在 ApplicationPoolIdentity、x64 下运行)。该网站使用以下设置:
<identity impersonate="true" />
<authentication mode="Windows" />
<customErrors mode="Off" />
<authorization>
<deny users="?" />
</authorization>
我的站点尝试通过 IIS 管理 API(位于本地主机)读取其他站点的详细信息。我以本地管理员成员身份登录。在 IE 中,我尝试打开我的页面,但得到的是:
Site 'mysite' at 'myhost' is unknown.System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
at Microsoft.Web.Administration.Interop.IAppHostProperty.get_Value()
at Microsoft.Web.Administration.ConfigurationElement.GetPropertyValue(IAppHostProperty property)
at Microsoft.Web.Administration.Site.get_State()
我不明白为什么。我非常确定代码在我的帐户的模拟上下文中运行(可以看到这是调试器正在监视 System.Threading.Thread.CurrentPrincipal )。我做错了什么?
附注
UAC 已启用,但我认为这并不重要。 检查了 C:\Windows\system32\inetsrv\config 文件夹上的 NTFS 权限 - 管理员具有完全访问权限。
最佳答案
UAC确实是万恶之源。启用后,模拟行为就会被破坏。这里的事情真的太复杂了:(
启用 UAC 并模拟当前安全上下文时,主体报告他不是本地管理员组的成员。但他是。它与交互式/非交互式 session 有关。
关于asp.net - 使用 Microsoft.Web.Administration 所需的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963641/