Sou iniciante no WCF, mas estou tentando melhorar minha experiência. E no primeiro passo eu enfrentei o problema. Eu criei o serviço WCF mais simples. A listagem do código: (todo o código em um arquivo)
using System;
using System.ServiceModel;
namespace EssentialWCF
{
[ServiceContract]
public interface IStockService
{
[OperationContract]
double GetPrice(string ticker);
}
public class StockService : IStockService
{
public double GetPrice(string ticker)
{
return 94.85;
}
}
class Service
{
static void Main(string[] args)
{
ServiceHost serviceHost = new ServiceHost(typeof(StockService),
new Uri("http://localhost:8000/HelloWCF"));
serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
serviceHost.Open();
Console.WriteLine("To continue press ENTER");
serviceHost.Close();
}
}
}
Esse seria o serviço que me forneceria um número via console. Mas depurar me dê a exceção: (em vez de número :))
O HTTP não pôde registrar a URL http: // +: 8000 / HelloWCF / . Seu processo não possui direitos de acesso a este espaço para nome (consulte http://go.microsoft.com/fwlink/?LinkId=70353 para obter detalhes).
Você já enfrentou a mesma situação? Ficarei feliz em ver todos os conselhos.
Respostas:
Infelizmente, o link no texto da exceção, http://go.microsoft.com/fwlink/?LinkId=70353 , está quebrado. No entanto, costumava levar a http://msdn.microsoft.com/en-us/library/ms733768.aspx, que explica como definir as permissões.
Basicamente, você deve usar o seguinte comando:
netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user
Você pode obter mais ajuda sobre os detalhes usando a ajuda de
netsh
Por exemplo:
netsh http add ?
Dá ajuda no
http add
comando.fonte
COMPUTER_NAME\USER_NAME
o comando acima.netsh http add urlacl url=http://+:80/ user=DOMAIN\user
se desejar conceder à conta direitos de acesso a quaisquer espaços para nome na porta.Fechei o IDE do Visual studio e o reabri clicando com o botão direito do mouse no ícone do Visual Studio e dizendo "Executar como Administrador". Então, quando executei o host, funcionou !!!
fonte
Clique com o botão direito do mouse em Visual Studio> Executar como Administrador> Abra seu projeto e execute o serviço. Este é um problema relacionado a privilégios.
fonte
Você precisa de algum privilégio de administrador na sua conta, se a sua máquina na rede local aplicar algum privilégio de administrador ao seu usuário, caso contrário, você deve iniciar o ide como administrador ...
fonte
A coisa simples que você precisa fazer é fechar o ambiente do Visual Studio e abri-lo novamente usando 'Executar como administrador'. Agora deve ser executado com sucesso.
fonte
No Windows Vista e versões posteriores, o serviço HTTP WCF causaria a exceção mencionada porque uma conta restrita não tem o direito. Essa é a razão pela qual funcionou quando você o executou como administrador.
Todo desenvolvedor sensato deve usar uma conta RESTRITA e não como administrador, mas muitas pessoas seguem o caminho errado e é exatamente por isso que existem tantos aplicativos por aí que EXIGEM permissões de administrador quando não são realmente necessários. Trabalhar da maneira preguiçosa resulta em soluções preguiçosas. Espero que você ainda trabalhe em uma conta restrita (meus parabéns).
Existe uma ferramenta lá fora (a partir de 2008) chamada NamespaceManagerTool, se bem me lembro, que deveria conceder permissões de usuário restritas nesses URLs de serviço que você define para o WCF. Eu ainda não usei isso ...
fonte
Seu código de exemplo não funcionará como mostrado, porque você esqueceu de incluir um
Console.ReadLine()
antes daserviceHost.Close()
linha. Isso significa que o host é aberto e imediatamente fechado.Fora isso, parece que você tem um problema de permissão na sua máquina. Verifique se você está conectado como uma conta de administrador em sua máquina. Se você é um administrador, pode ser que você não tenha o Serviço de Publicação na World Wide Web (W3SVC) em execução para lidar com solicitações HTTP.
fonte
Embora eu tenha conseguido resolver esse problema em um computador, seguindo as soluções de outros usuários, o comando
netsh
não resolveu o problema em uma de minhas máquinas e, embora o usuário atual tivesse direitos de administrador, eu ainda estava recebendo o "HTTP não pôde registrar o URL .... Seu processo não possui direitos de acesso a este espaço para nome ". Então, estou compartilhando minha solução, caso você ainda não consiga trabalhar com as outras soluções também.Depois de tentar conceder permissões de gravação ao usuário no diretório físico do meu site e não ter sucesso, finalmente decidi tentar alterar as configurações do IIS .
Como as imagens abaixo mostram, configurei as credenciais do caminho físico do meu site para conectar-se como um usuário específico, que era uma conta de administrador com DOMÍNIO \ nome de usuário e senha, e isso foi suficiente para que o erro desaparecesse.
fonte
Feche o iis express e todos os navegadores (se o URL tiver sido aberto em qualquer navegador). Abra também o IDE do visual studio no modo de administrador. Isso resolveu meu problema.
fonte