0

我正在 IIS 7.5(使用 Windows 7)中创建一个需要能够创建更多网站的网站。我编写了使用Microsoft.Web.Administration以编程方式创建网站的代码,当我以管理员身份运行它时效果很好。

现在我尝试在我的 Web 应用程序的上下文中使用相同的代码。它因错误而失败

错误:由于权限不足,无法读取配置文件

对于文件redirection.config(我理解它位于%WinDir%/System32/inetsrv/config)。

我尝试为这个特定网站创建一个新的应用程序池,以 IIS AppPool[AppPoolName] 身份运行。然后我尝试授予该身份权限以使用编辑 IIS 配置

ManagementAuthorization.Grant(@"IIS AppPool\MyAppPool", "Default Web Site", false);

但我仍然得到同样的错误。

我还应该尝试什么?

4

2 回答 2

1

从安全的角度来看,这可能不是最明智的方法。如果该站点被劫持,那么您的攻击者将能够干扰这些文件(没有好的目的),甚至只是删除它们。

我们解决这个问题的方法是将网站创建任务分离到一个 Windows 服务中,该服务以正确的权限运行以执行这些活动。在此服务中是一个远程处理端点(尽管这些天您可能想要使用 WCF)。

然后,我们创建了一个在 GAC 中签名和注册的代理程序集(如果您以低于完全信任的方式运行,它还需要使用 APTCA 属性进行标记)。此程序集将相关调用从管理 Web 应用程序/服务传递到 Windows 服务中的远程处理端点。

这允许我们以至少特权和部分信任模式运行管理站点。Windows 服务应用程序中公开的任何功能都在一定程度上缩小了通过站点管理任务完成的范围。

这是一种称为沙盒的技术。

于 2010-07-08T22:19:34.927 回答
0

我已经找到了一种方法来做到这一点,但我非常想听听专家对这是否是明智之举的意见。

我将 IIS AppPool\MyAppPool 帐户的修改和写入权限授予 %WinDir%/System32/inetsrv/config 和其中的三个 .config 文件。

于 2010-07-08T16:53:01.590 回答