【问题标题】:Unable to commit WebAdministration changes in Azure Web Role无法在 Azure Web 角色中提交 WebAdministration 更改
【发布时间】:2010-12-21 07:31:20
【问题描述】:

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

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

我的 ServerManager 代码在 RoleEntryPointOnStart 方法中执行。

我的理解是,在 1.3 中全面支持 IIS 的目的是为了让我们能够更好地控制应用程序的配置,包括在需要时动态创建新的 IIS 站点。

【问题讨论】:

    标签: iis azure


    【解决方案1】:

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

    【讨论】:

    • 如何运行具有提升权限的角色?我认为我们有启动任务的原因之一是这是不可能的?
    • 只需将 放入您的 ServiceDefinition.csdef
    • 当我将“”添加到我的 Web 角色定义并尝试部署时,它无法启动。我已经仔细检查过我这样做是否正确。有什么想法吗?
    【解决方案2】:

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

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

    【讨论】:

    • 嗯,您可以运行提升的启动任务,但您也可以运行提升的角色(RoleEntryPoint 中的代码,例如 OnStart)。对于脚本 IIS 更改,我认为启动任务为时过早(尚未设置应用程序池),因此最好运行提升的角色并在 OnStart 中进行更改。请注意,运行提升的角色不会提升实际的 Web 应用程序(在 IIS 下),只是提升 RoleEntryPoint 代码。
    • 我不知道这是一个选项,所以我花了一些时间试图研究如何做到这一点。尽管我尽了最大的努力,但我仍然无法找到如何以提升的权限运行角色。我必须在这里错过一个明显的步骤,你能指出我正确的方向吗?
    【解决方案3】:

    提供一个明确的例子供参考@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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-19
      • 2019-10-03
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多