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

Web deployment task failed (This access control list is not in canonical form and therefore cannot be modified)

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

This access control list is not in canonical form and therefore cannot be modified.

我在 Windows 10 岁以下并且使用 VS 2013 Ultimate。
我从 web platform installer 5 安装了 web deploy 3.5,我确保服务正常工作

解决方案 1

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

  1. 转到 IIS
  2. 右键单击要发布到的网站并 select 编辑权限
  3. 单击安全 选项卡。
  4. 单击编辑按钮
  5. 将出现一个消息框,告知权限排序不正确。
  6. 单击该消息框上的重新排序

解决方案 2

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

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

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

干杯

您可以运行以下命令来修复它

命令提示符

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

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

<IncludeSetACLProviderOnDestination>False</IncludeSetACLProviderOnDestination>