none
Erro com WCF iniciando como serviço do Windows RRS feed

  • Pergunta

  • Estou tentando iniciar um WCF como serviço do Windows, porém ele me retorna o seguinte erro:

    O HTTP não pôde registrar a URL http://+:80/. Seu processo não tem direitos de acesso a este namespace (consulte o site http://go.microsoft.com/fwlink/?LinkId=70353 para obter detalhes).

    Como posso resolver este problema, quando era um executável comum, funcionava perfeitamente, agora como estou colocando ele como serviço do windows, ele fica retornando este erro.

    Estou fazendo desta forma para iniciar:

                ServiceHost host = new WebServiceHost(typeof(Server));
                WebHttpBinding binding = new WebHttpBinding();
                binding.MaxReceivedMessageSize = 999999999;
                ServiceEndpoint point = host.AddServiceEndpoint(typeof(IServer), binding, url);
                point.Behaviors.Add(new WebHttpBehavior());
                host.Open();
                btnSalvar.Log(new string[1] { "CONECTADO" });

    O problema não é o código, pois como já informei, ele funciona em um exe comum, o erro acontece após colocar como serviço do windows.

    terça-feira, 26 de junho de 2018 12:47

Todas as Respostas

  • Mariana,

    Veja se as instruções deste link te ajudam: https://stackoverflow.com/questions/22686469/system-servicemodel-addressaccessdeniedexception-http-could-not-register-url-ht


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 26 de junho de 2018 14:57
  • Juliano, já tentei todas as instruções, porém continua com o mesmo problema, ele sempre informa o erro, só colocar como serviço e o erro acontece. 
    terça-feira, 26 de junho de 2018 17:04
  • Mariana, Bom Dia!

    Tente adaptar o seguinte código a sua solução:

    // Inicia o Windows service.
    protected override void OnStart(string[] args)
    {
        if (serviceHost != null)   
            serviceHost.Close();
        
        serviceHost = new ServiceHost(typeof(CalculatorService));
    
        serviceHost.Open();
    }
    
    //Parando o serviço
    protected override void OnStop()
    {
        if (serviceHost != null)
        {
            serviceHost.Close();
            serviceHost = null;
        }
    }

    O erro está ocorrendo pois ao iniciar o serviço sua aplicação não possui o método OnStart que é herdado da classe base do serviço "ServiceBase",

    ao herdar da mesma você poderá implementar os seguintes métodos

    • OnStart
    • OnStop
    • OnShutdown
    • OnPause
    • OnContinue

    Ressaltando que na classe que possui o método main "static void Main()", é necessário implementar a chamada do método .Run conforme o exemplo a baixo.

    static void Main()
    {
       ServiceBase[] ServicesToRun;
       ServicesToRun = new ServiceBase[] 
       { 
         new Exemplo() 
       };
       ServiceBase.Run(ServicesToRun);
    }

    Abraço!!!

    quinta-feira, 28 de junho de 2018 12:50