Web 部署任务失败(此访问控制列表不是规范形式,因此无法修改)

Posted

技术标签:

【中文标题】Web 部署任务失败(此访问控制列表不是规范形式,因此无法修改)【英文标题】:Web deployment task failed (This access control list is not in canonical form and therefore cannot be modified) 【发布时间】:2015-09-18 09:33:16 【问题描述】:

在我的机器上将 ASP.NET MVC 4 应用程序发布到 IIS 8 时出现以下错误:

此访问控制列表不是规范形式,因此无法修改。

我在 Windows 10 下并使用 VS 2013 Ultimate。 我从 web 平台安装程序 5 安装了 web deploy 3.5,并确保服务正常运行

【问题讨论】:

【参考方案1】:

解决方案 1

我可以通过以下方式解决这个问题

    转到 IIS 右键单击要发布到的网站并选择编辑权限 点击安全标签。 点击编辑按钮 将出现一个消息框,提示权限排序不正确。 点击该消息框上的重新排序

解决方案 2

打开命令提示符(CMD)并执行以下两条语句

icacls.exe C:\inetpub\wwwroot /verify /T /C /L /Q
icacls.exe C:\inetpub\wwwroot /reset /T /C /L /Q

注意:也许你会想要以管理员权限打开 CMD(也许我不确定)

干杯

【讨论】:

好的,这行得通,但为什么行得通?错误是什么意思? 在最近的版本中,点击“高级”按钮后可以使用“重新排序”选项。【参考方案2】:

你可以运行下面的命令来修复它

命令提示符

icacls.exe C:\inetpub\wwwroot\<VIRTUAL DIRECTORY> /verify /T /C /L /Q
// If any entries are reported as being not in canonical order then run:
icacls.exe C:\inetpub\wwwroot\<VIRTUAL DIRECTORY> /reset /T /C /L /Q

Source

powershell

$path = C:\inetpub\wwwroot\<VIRTUAL DIRECTORY>
$acl = Get-Acl $path
Set-Acl $path $acl

Source

【讨论】:

【参考方案3】:

您可以通过修改 Visual Studio 包生成参数防止此问题:在 pubxml 文件的 PropertyGroup 部分中,添加

<IncludeSetACLProviderOnDestination>False</IncludeSetACLProviderOnDestination>

【讨论】:

以上是关于Web 部署任务失败(此访问控制列表不是规范形式,因此无法修改)的主要内容,如果未能解决你的问题,请参考以下文章

如何修复此访问代码

Visual Studio 2010 Web 部署任务失败

TFS 构建错误:Web 部署任务失败。包文件没有 .zip 文件扩展名

Web 部署任务失败。已超出此站点的最大连接数。天蓝色

Web 部署任务失败。无法连接...服务器没有响应

如何清除此访问报告中文本框上的空白?