2010-11-18 30 views
4

Je tente de créer un package de déploiement dans Visual Web Developer Express 2010 qui définit la liste de contrôle d'accès d'un sous-dossier du site Web déployé. J'ai utilisé les informations suivantes http://leethams.wordpress.com/2010/06/12/modifying-directory-permissions-with-web-deployment/Définition des ACL pour les sous-dossiers à l'aide du package Web Deploy

Ceci est mon test:

Créer une nouvelle application ASP.NET vierge (WebApplication2 dans cet exemple)

Dans les options de compilation avancées, le changement version cible du .NET Framework 3.5

Créer un nouveau dossier (Config dans cet exemple) et ajouter un fichier dans le dossier

Créer un nouveau fichier appelé WebApplication2.wpp.targets, avec ce contenu

<?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> 

J'exercerai de la ligne de commande et tout fonctionne très bien:

------------------------------------------------------- 
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) 

Maintenant, pour définir les autorisations pour le dossier Config, je change la ligne suivante et recompiler le package de déploiement.

<path>$(_MSDeployDirPath_FullPath)/Config</path> 

je reçois l'erreur suivante:

------------------------------------------------------- 
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. 

En anglais, il dit: « Erreur: Vous devez spécifier une valeur pour « setAclUser » lorsque vous utilisez le fournisseur « SETACL » avec un chemin physique ». Notez que le troisième sETACL a été changé pour le chemin physique où le package de déploiement se trouve que je puis

essayé de modifier la façon suivante:.

<AdditionalProviderSettings>setAclUser;setAclResourceType;setAclAccess</AdditionalProviderSettings> 

Mais l'erreur persiste. Si j'exécute le package de déploiement avec le commutateur "/ t", l'erreur n'est pas générée, bien qu'elle indique toujours le chemin physique. Je peux coder en dur le chemin IIS et modifiez la ligne comme celui-ci:

<path>Default Web Site/WebApplication2_deploy/Config</path> 

Il fonctionne très bien. Cependant, je ne voudrais pas faire cela, car le chemin d'installation doit être paramétré.

Changer le chemin d'une backslassh ne fait aucune différence:

<path>Default Web Site/WebApplication2_deploy\Config</path> 

Toute aide serait appréciée. Merci

+0

double possible de [peut-fournisseur SETACL de Web Deploy être utilisé sur un sous-répertoire?] (Http://stackoverflow.com/questions/6861990/can-web-deploys-setacl-provider-be -utilisé-sur-un-sous-répertoire) –

Répondre