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 部署任务失败(此访问控制列表不是规范形式,因此无法修改)的主要内容,如果未能解决你的问题,请参考以下文章