使用Microsoft.Web.Administration所需的权限

时间:2012-01-22 18:49:39

标签: asp.net security iis iis-7

我正在尝试使用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权限 - 管理员的完全访问权限。

2 个答案:

答案 0 :(得分:1)

UAC确实是所有邪恶的根源。模仿行为在其开启时会被破坏。这里有些事情过于复杂:(

启用UAC并模拟当前安全上下文时,主体报告他不是本地Administrators组的成员。但他是。它与交互式/非交互式会话有关。

答案 1 :(得分:0)

尝试将临时目录设置为web.config到具有完全权限的文件夹。

<compilation tempDirectory="c:\temp" ... ></compilation>