AddressAccessDeniedException
Lors de travaux sur un service WCF avec Windows 7, j’ai rencontré l’erreur suivante :
HTTP could not register URL http://+:1664/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).
Et je suis sûr que tous ceux qui ont créé des services sur les précédentes versions (Windows XP) et qui ont essayé de migrer leurs services à Windows Vista ou Windows 7 ont rencontré ce message (au numéro du port près).
Comme cela arrive souvent, l’erreur se déclenche à cause des changements de paramètres de sécurité dans Vista et Seven. La plupart des gens n’ont pas les privilèges administrateur par défaut (comme c’était le cas sur les plateformes précédentes). Ceci a une incidence sur la capacité à »runner » des services Web HTTP et à écouter à une adresse HTTP particulière. Par défaut, chaque point d’accès HTTP est réservé à l’usage de l’administrateur système. Vos services ne pourront pas démarrer et générerons l’exception « AddressAccessDeniedException » si vous n’utilisez pas le service à partir d’un compte élevé.
Pour résoudre ce problème, le propriétaire de l’espace de noms HTTP (built-in administrateur) doit déléguer cette propriété à l’utilisateur sous lequel vous exécuterez votre application (la plupart du temps, c’est l’utilisateur connecté).
Pour ce faire :
- Démarrez une invite de commande (avec « Exécuter en tant qu’administrateur » afin que vous ayez des privilèges élevés)
- Taper ensuite « Netsh.exe »
- Taper »http add urlacl url=http://+:1664/ user = DOMAIN \ UserName«
*Notez que j’ai fait correspondre l’URL de cette commande à l’URL qui apparaît dans le message d’erreur.
*Il se peut que votre utilisateur ne soit pas dans un domaine. Et dans ce cas il faudrait avoir par exemple : « user=administrator »
Revenez à Visual Studio et vérifiez que votre service fonctionne correctement.
