2010-11-18 4 views
4

Я пытаюсь создать пакет развертывания в Visual Web Developer Express 2010, который устанавливает ACL для подпапки развернутого веб-сайта. Я использовал следующую информацию http://leethams.wordpress.com/2010/06/12/modifying-directory-permissions-with-web-deployment/настройка списков ACL для подпапок с использованием пакета Web Deploy

Это мой тест:

Создать новый пустой ASP.NET приложения (WebApplication2 в данном примере)

В расширенные опции компиляции, изменение .NET Framework версии целевой до 3.5

Создать новую папку (Config в данном примере) и добавить любой файл в папке

Создать новый файл с именем 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> 

Любая помощь будет оценена. Спасибо

+0

возможно дубликат [Может поставщик SetACL веб-развертывания в использоваться на подкаталог?] (Http://stackoverflow.com/questions/6861990/can-web-deploys-setacl-provider-be -используется-на-поддиректории) –

ответ

Смежные вопросы