我试图在Visual Web Developer Express 2010中为部署的网站的子文件夹设置ACL来构建部署包。我用下面的信息http://leethams.wordpress.com/2010/06/12/modifying-directory-permissions-with-web-deployment/使用Web Deploy包设置子文件夹的ACL
这是我的测试:
创建一个新的空白ASP.NET应用程序(WebApplication2在这个例子中)
在先进的编译选项,变化的.NET Framework目标版本3.5
创建(在本例中配置)的新文件夹并添加任何文件的文件夹
创建一个名为WebApplication2.wpp.targets新的文件中,与此内容
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action do also set ACLs -->
<IncludeCustomACLs>TRUE</IncludeCustomACLs>
<AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
$(AfterAddIisSettingAndFileContentsToSourceManifest);
SetCustomACLs;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="SetCustomACLs" Condition="'$(IncludeCustomACLs)'=='TRUE'">
<Message Text="Adding Custom ACls" />
<ItemGroup>
<MsDeploySourceManifest Include="setAcl" Condition="$(IncludeSetAclProviderOnDestination)">
<setAclUser>anonymousAuthenticationUser</setAclUser>
<path>$(_MSDeployDirPath_FullPath)</path>
<setAclAccess>Read,Write</setAclAccess>
<setAclResourceType>Directory</setAclResourceType>
<AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
</Project>
我在命令行中执行,一切工作正常:
-------------------------------------------------------
Start executing msdeploy.exe
-------------------------------------------------------
"C:\Program Files\IIS\Microsoft Web Deploy\\msdeploy.exe" -source:package='C:\T
emp\WebApplication2\WebApplication2\obj\Debug\Package\WebApplication2.zip' -dest
:auto,includeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:
ContentExtension -disableLink:CertificateExtension -setParamFile:"C:\Temp\WebApp
lication2\WebApplication2\obj\Debug\Package\WebApplication2.SetParameters.xml"
Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Número total de cambios: 3 (0 agregados, 0 eliminados, 3 actualizados, 0 parámet
ros cambiados, 0 bytes copiados)
现在,要设置权限的Config文件夹,我更改以下行,重建部署包。
<path>$(_MSDeployDirPath_FullPath)/Config</path>
我收到以下错误:
-------------------------------------------------------
Start executing msdeploy.exe
-------------------------------------------------------
"C:\Program Files\IIS\Microsoft Web Deploy\\msdeploy.exe" -source:package='C:\T
emp\WebApplication2\WebApplication2\obj\Debug\Package\WebApplication2.zip' -dest
:auto,includeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:
ContentExtension -disableLink:CertificateExtension -setParamFile:"C:\Temp\WebApp
lication2\WebApplication2\obj\Debug\Package\WebApplication2.SetParameters.xml"
Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Info: Actualizando setAcl (C:\Temp\WebApplication2\WebApplication2\obj\Debug\Pac
kage\PackageTmp/Config).
Error: Se debe especificar un valor para 'setAclUser' cuando se usa el proveedor
'setAcl' con una ruta de acceso física.
Recuento de errores: 1.
在英语中,它说:“错误:‘setAclUser’的值必须使用带有物理路径的‘SETACL’供应商时,可以指定”。注意第三SETACL改为在部署包所在的物理路径
我又试图修改这种方式:
<AdditionalProviderSettings>setAclUser;setAclResourceType;setAclAccess</AdditionalProviderSettings>
但错误依然存在。 如果我用“/ t”开关执行部署包,它不会抛出错误,尽管它仍然显示物理路径。 我可以硬编码IIS路径,改变这样的行:
<path>Default Web Site/WebApplication2_deploy/Config</path>
它工作正常。但是,我不想这样做,因为安装路径需要参数化。
修改路径到backslassh没有什么区别:
<path>Default Web Site/WebApplication2_deploy\Config</path>
任何帮助,将不胜感激。 谢谢
的可能重复[可Web部署的SETACL提供商在子目录中使用?(http://stackoverflow.com/questions/6861990/can-web-deploys-setacl-provider-be - 二手-ON-A-子目录) – 2011-10-18 15:03:53