Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Uma das principais mudanças de segurança implementada à partir do Windows Vista é o Controle de Conta de Usuário (UAC). Com o UAC habilitado, todas as contas de usuário, incluindo contas administrativas, são executadas com direitos de usuário padrão.
Quando um administrador faz logon, o Windows cria dois tokens de acesso separados para o usuário, sendo um token de acesso sem privilégios administrativos (token filtrado) e outro de acesso de administrador (token full). No momento em que um processo precisa ser executado com privilégio elevado, o Windows não utiliza o token filtrado para executar o processo e, sim, o token completo. Se o usuário for administrador, o Windows exibe a tela do UAC apenas para confirmar a troca do token. Caso contrário, o Windows solicita as credenciais de uma conta administrativa.
O resultado é que isso afeta execução de serviços web HTTP, pois escutar um determinado endereço HTTP é uma operação restrita para usuários com privilégios administrativos. Por padrão, cada caminho HTTP é reservado para uso do administrador do sistema. Por exemplo, ao realizar o debug dos serviços no Visual Studio, a exceção AddressAccessDeniedException é gerada no momento em que o serviço é iniciado caso não seja executado através de uma conta elevada.
Mensagem de erro:
HTTP could not register URL https://+:8000/. Your process does not have access rights to this namespace (see https://go.microsoft.com/fwlink/?LinkId=70353 for details).
Uma maneira de resolver o problema é executar o Visual Studio elevado. Outra opção é executar o prompt de comando como administrador e executar o comando a seguir para atribuir o namespace HTTP para a conta do usuário:
netsh http add urlacl url=https://+:8000/ user=MYMACHINE\UserName
*MYMACHINE deve ser substituído pelo nome do computador ou pelo domínio e UserName pelo usuário administrador. E a URL digitada deve corresponder a URL da mensagem de erro.
Ao executar o serviço novamente no Visual Studio a exceção não irá mais ocorrer.
Para maiores informações do comando netsh execute o comando “netsh http”.