msdeploy如何将IIS_IUSRS的读/写权限授予c:\ windows \ temp文件夹

时间:2013-06-07 17:36:37

标签: msdeploy

我在项目wpp.targets文件的ItemGroup中添加了这个项目。

<MsDeploySourceManifest Include="setAcl">
    <Path>%windir%\TEMP</Path>
    <setAclUser>IIS_IUSRS</setAclUser>
    <setAclAccess>Read,Write,Modify</setAclAccess>
    <setAclResourceType>Directory</setAclResourceType>
    <AdditionalProviderSettings>setAclUser;setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>

,这在参数部分

<MsDeployDeclareParameters Include="TempFolderPermissionSetAclParam">
    <Kind>ProviderPath</Kind>
    <Scope>setAcl</Scope>
    <Description>Add read, write permission for IIS_IUSRS to the temp folder.</Description>
    <DefaultValue>%windir%\TEMP</DefaultValue>
    <Value>%windir%\TEMP</Value>
    <Tags>Hidden</Tags>
    <Priority>$(VsSetAclPriority)</Priority>
    <ExcludeFromSetParameter>True</ExcludeFromSetParameter>
  </MsDeployDeclareParameters>

它在清单xml文件中生成此行   

但是有一条错误消息说: 错误:'setAcl'时必须指定'setAclUser'设置的值 provider与物理路径一起使用。

这里缺少什么?

1 个答案:

答案 0 :(得分:0)

自从你提出这个问题已经有一段时间了,但从表面上看,这看起来或多或少是正确的:指定绝对路径的关键点是你在AdditionalProviderSettings中包含setAclUser,以及setAclUser。

最终,虽然构建程序包时SourceManifest文件可能显示正确,但似乎重要的是在创建的zip中包含的archive.xml文件中的setAcl元素上的setAclUser设置。打开它并确保存在setAclUser所需的值。

同样,Visual Studio可以自由使用MSBuild文件所涉及的缓存;实际上,似乎Visual Studio将尊重仅对pubxml文件和项目文件(如csproj)所做的更改。在对任何其他目标文件进行更改时,应关闭Visual Studio并在进行每次编辑后重新打开。这可以解释为什么你看似正确的解决方案不起作用:它可能只是陈旧的目标文件缓存。