无法在Azure Web角色中提交WebAdministration更改

时间:2010-12-21 07:31:21

标签: iis azure

我在新的1.3 SDK中运行了Azure Web角色,尝试使用Microsoft.Web.Administration.ServerManager对IIS进行更改时遇到权限问题。每当我执行CommitChanges()时,它都会抛出此错误:

  

UnauthorizedAccessException“由于权限不足,无法写入配置文件”。

我的ServerManager代码正在OnStart的{​​{1}}方法中执行。

我的理解是,在1.3中转移到完整IIS支持的目的是为了让我们可以更好地控制应用程序的配置,包括在需要时动态创建新的IIS站点。

3 个答案:

答案 0 :(得分:8)

确保您的角色以提升的权限运行。

答案 1 :(得分:1)

我认为这里有两个问题。首先在Azure中使用IIS。是的,使用1.3 SDK意味着我们现在可以访问比以前更多的功能。这意味着我们可以在配置中为我们的站点设置多个站点和虚拟目录,如training kit所示。

其次,在尝试以编程方式进行更改时,您会遇到特权问题。我假设你不是想做一件你可以通过上面的配置做的事情。您的代码出错的最可能原因是因为Web角色不是以管理员权限运行的。幸运的是,在1.3 SDK中,我们还可以使用提升的权限运行代码。如training kit中的其他地方所示,您可以创建一个单独的.exe,您指定在启动时使用配置中的提升权限运行。

答案 2 :(得分:0)

提供一个明确的例子来参考@smarx答案。

以下是使用管理员级权限运行RoleEntryPoint.OnStart WebRole.Onstart )的配置。

<ServiceDefinition name="MyProject.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
  <WebRole name="MyProject.WebRole" vmsize="Small">
    <Runtime executionContext="elevated"/> <!-- Required for certain WebRoleOnStart tasks (avoid insufficient permission errors) -->
    <Sites>
       <!-- ... -->
    </Sites>
 </WebRole>
</ServiceDefinition>