The format of the specified network name is not valid : HTTPListener error on system restart

0

I have implemented an Http Listener in c# as a windows service. The windows service is set to start automatically when the machine is restarted. When I manually start the service after installing it, the http listener works fine and it responds to the requests it receives. But, when the service is started on a system restart, I get the following error:

System.Net.HttpListenerException (0x80004005): The format of the specified network name is not valid

I get this error on listener.Start().

The code of http listener is like this:

HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://myip:port/");
listener.Start();

I got a suggestion from this already asked question. If I follow what's given in the answer, it still doesn't work. Furthermore, I tried running:

netsh http show iplisten

in powershell, the list is empty. Even when the http listener works (when the first time I install the service and run it), the output of this command is empty list. So I don't think this is an issue.

Any suggestions will be really helpful.

c#
.net
windows-services
asked on Stack Overflow Sep 23, 2020 by Ashish Kumar

1 Answer

0

Answering my own question. It seems there are some other services that need to be running for us to be able to start an http listener. These are not yet started by the time windows starts my service. I found two solutions for this, one is to use delayed start

sc.exe config myservicename start=delayed-auto

The other is to have a try catch while starting the http listener, and if it fails, try again after a few seconds. In my case, time is of the essence so I'm using the second approach because it start the listener about 2 minutes faster than the first approach.

answered on Stack Overflow Oct 6, 2020 by Ashish Kumar

User contributions licensed under CC BY-SA 3.0