我正在IIS 7.5(使用Windows 7)中创建一个网站,该网站需要能够创建更多网站。我编写了使用Microsoft.Web.Administration以编程方式创建网站的代码,当我以管理员身份运行时,这可以正常工作。
现在我正在尝试在我的Web应用程序的上下文中使用相同的代码。它失败并出现错误
错误:由于权限不足,无法读取配置文件
用于文件redirection.config(据我所知,它位于%WinDir%/ System32 / inetsrv / config中)。
我尝试为此特定网站创建一个新的apppool,在IIS AppPool [AppPoolName]标识下运行。然后,我尝试使用
授予该身份编辑IIS配置的权限ManagementAuthorization.Grant(@"IIS AppPool\MyAppPool", "Default Web Site", false);
但我仍然得到同样的错误。
我还应该尝试什么?
答案 0 :(得分:1)
从安全角度来看,这可能不是最明智的方法。如果此站点被劫持,那么您的攻击者将能够干扰这些文件(没有任何好处),甚至只是删除它们。
我们采用这种方式的方法是将网站创建任务分离为运行时具有执行这些活动的正确权限的Windows服务。在这个服务中是一个远程终点(虽然这些天你可能想要使用WCF)。
然后,我们创建了一个在GAC中签名并注册的代理程序集(如果您的运行速度低于完全信任,则还需要使用APTCA属性进行标记)。此程序集从admin web app / service传递对Windows服务中的远程端点的相关调用。
这允许我们以至少特权和部分信任模式运行管理站点。通过Windows服务应用程序中公开的任何功能,可以通过站点管理任务完成的范围缩小范围。
这是一种称为沙盒的技术。
答案 1 :(得分:0)
我找到了一种方法,但我非常希望听到关于这是否是明智之举的专家意见。
我将IIS AppPool \ MyAppPool帐户的修改和写入权限授予%WinDir%/ System32 / inetsrv / config以及其中的三个.config文件。