我正在尝试在 Web Deploy 包中创建一个对应用程序池用户可写的子目录(config)。看起来好像我正在尝试完全按照这篇文章中的内容进行操作: Web Deploy 的 setAcl 提供程序可以在子目录中使用吗?
发布工作正常,但 DefaultAppPool 仅具有对配置目录的读取权限。我在下面创建了 {ProjectName}.wpp.targets 文件,并且在我的站点清单中生成了 config 文件夹的以下 ACL 条目。
{项目名称}.wpp.targets
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="SetupCustomAcls" AfterTargets="AddIisSettingAndFileContentsToSourceManifest">
<ItemGroup>
<MsDeploySourceManifest Include="setAcl">
<Path>$(_MSDeployDirPath_FullPath)\config</Path>
<setAclAccess>Read,Write,Modify</setAclAccess>
<setAclResourceType>Directory</setAclResourceType>
<AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<Target Name="DeclareCustomParameters" AfterTargets="AddIisAndContentDeclareParametersItems">
<ItemGroup>
<MsDeployDeclareParameters Include="Config Folder">
<Kind>ProviderPath</Kind>
<Scope>setAcl</Scope>
<Description>Add write permission to config folder.</Description>
<DefaultValue>$(_DestinationContentPath)\config</DefaultValue>
<Match>^$(_EscapeRegEx_MSDeployDirPath)\\config$</Match>
<Value>$(_DestinationContentPath)/config</Value>
<ExcludeFromSetParameter>True</ExcludeFromSetParameter>
</MsDeployDeclareParameters>
</ItemGroup>
</Target>
</Project>
当我在 Advanced 部分中将 Include ACLs 更改为 true 时,会提供该参数但未应用该参数。
注意:我不确定这是否相关,但安装摘要的详细信息窗格中存在以下几行。
[24/04/2012 1:41:46 PM] Source setAcl (C:\Users\benr\Desktop\eippk\obj\Release\Package\PackageTmp\config) does not match destination (Default Web Site/WAT_FLNet_deploy/config) differing in attributes (isDest['False','True'],setAclUser,setAclAccess). Update pending.
[24/04/2012 1:41:46 PM] Updating setAcl (Default Web Site/WAT_FLNet_deploy/config).
我希望这很简单,但有人可以帮忙吗?
编辑:好的,这在 Server 2008 R2 安装上正常工作。看起来这是由于 Windows 客户端 SKU 中未包含管理服务。假设您可以单独安装它,但我尝试了 Web Platform Installer 3.0 和 Web Deploy 2.1 的完整安装,但没有成功。欢迎任何想法。