我正在尝试使用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(在localhost上)阅读其他网站的详细信息。我以本地管理员的身份登录。在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
)。我做错了什么?
P.S。
UAC已开启,但我认为这并不重要。 检查C:\ Windows \ system32 \ inetsrv \ config文件夹上的NTFS权限 - 管理员的完全访问权限。
答案 0 :(得分:1)
启用UAC并模拟当前安全上下文时,主体报告他不是本地Administrators组的成员。但他是。它与交互式/非交互式会话有关。
答案 1 :(得分:0)
尝试将临时目录设置为web.config到具有完全权限的文件夹。
<compilation tempDirectory="c:\temp" ... ></compilation>