web-dev-qa-db-fra.com

Échec de la tâche de déploiement Web (Cette liste de contrôle d'accès n'est pas sous forme canonique et ne peut donc pas être modifiée)

Publication de l'application ASP.NET MVC 4 sur IIS 8 sur mon ordinateur en générant l'erreur suivante:

Cette liste de contrôle d'accès n'est pas sous forme canonique et ne peut donc pas être modifiée.

Je suis sous Windows 10 et j'utilise VS 2013 Ultimate.
J'ai installé Web deploy 3.5 à partir du programme d'installation de la plate-forme Web 5 et je me suis assuré que les services fonctionnent 

 enter image description here

33
Hakam Fostok

Solution 1

J'ai pu résoudre ce problème de la manière suivante

  1. Aller à IIS
  2. Cliquez avec le bouton droit sur le site Web sur lequel vous publiez et sélectionnez Modifier les autorisations.
  3. Cliquez sur l'onglet Sécurité.
  4. Cliquez sur le bouton Edit
  5. Une boîte de message apparaîtra pour indiquer que l'autorisation n'a pas été correctement commandée.
  6. Cliquez sur Réorganiser dans cette boîte de message.

 enter image description here

Solution 2

Ouvrez l'invite de commande (CMD) et exécutez les deux instructions suivantes

icacls.exe C:\inetpub\wwwroot /verify /T /C /L /Q
icacls.exe C:\inetpub\wwwroot /reset /T /C /L /Q

note: Peut-être vous voudrez ouvrir le CMD avec le privilège d’administrateur (Peut-être que je ne suis pas sûr)}

À votre santé

72
Hakam Fostok

Vous pouvez exécuter la commande suivante pour résoudre ce problème 

command invite

icacls.exe C:\inetpub\wwwroot\<VIRTUAL DIRECTORY> /verify /T /C /L /Q
// If any entries are reported as being not in canonical order then run:
icacls.exe C:\inetpub\wwwroot\<VIRTUAL DIRECTORY> /reset /T /C /L /Q

La source

powershell

$path = C:\inetpub\wwwroot\<VIRTUAL DIRECTORY>
$acl = Get-Acl $path
Set-Acl $path $acl

La source

2
Ben Anderson

Vous pouvez empêcher ce problème en modifiant vos paramètres de génération de package Visual Studio: Dans la section PropertyGroup de votre fichier pubxml, ajoutez

<IncludeSetACLProviderOnDestination>False</IncludeSetACLProviderOnDestination>
0
Bill Reinke