我正在尝试在Web Deploy包中创建一个可写入应用程序池用户的子目录(config)。看起来好像我正在尝试完成这篇文章中的内容: Can Web Deploy's setAcl provider be used on a sub-directory?
发布工作正常,但DefaultAppPool只对config目录具有读访问权限。我在下面创建了{ProjectName} .wpp.targets文件,并在我的sitemanifest中生成了config文件夹的以下ACL条目。
<?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>
当我在“高级”部分中将“包含ACL”更改为“真”时,将提供参数但未应用该参数。
注意:我不确定这是否相关,但安装摘要的“详细信息”窗格中显示以下行。
[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但没有成功。欢迎任何想法。
答案 0 :(得分:0)
仅供参考:我卸载并重新安装WebDeploy,重新启动,现在正在运行! $%#@&安培;!