15

I could run a Windows Service hosted WCF service listening http://localhost:80/MyService while IIS was serving pages on http://localhost:80 and both works.

But many places in the internet (like this and this) say that only a single process can listen each port simultaneoulsy.

Are they wrong?

Community
  • 1
  • 1
Jader Dias
  • 88,211
  • 155
  • 421
  • 625

2 Answers2

32

HTTP.sys makes this possible. From the article:

...because WCF and IIS 6.0 both use the kernel-mode HTTP stack (HTTP.sys), IIS 6.0 can share port 80 with other self-hosted WCF services running on the same machine...

HTTP.sys acts as a port-forwarding service, for HTTP (port 80) traffic.

Cheeso
  • 189,189
  • 101
  • 473
  • 713
  • This is the answer. HTTP.sys is how multiple programs can listen on port 80 under Windows. – jmucchiello Jan 14 '10 at 23:38
  • 2
    and it also happens with other ports and protocols? http://stackoverflow.com/questions/2085790/can-2-wcf-service-processes-listen-the-same-port – Jader Dias Jan 18 '10 at 12:32
  • 2
    So this is why the hell Windows allowed me to listen to port 8080 while the Windows Media Service was HTTP-Listening on the same port. Things are weird. – sinni800 Nov 05 '11 at 23:36
0

Could it be that you are hosting the WCF service in IIS. So that IIS is sending the request to the WCF service based on the URL.

Edit: It may be also that the WCF services were setup to do port sharing like this: http://msdn.microsoft.com/en-us/library/ms734772.aspx

Edit2: Ok, I reread your edited question, see the links in this answer: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/8993f7c5-1f78-4156-a131-d9b40af10d9a

"The IP Listen List allows WCF services to coexist with applications that use a port for some of the IP addresses of the machine. If the IP Listen List contains any entries, the HTTP Server API will only bind to those IP addresses that the list specifies."

AaronLS
  • 37,329
  • 20
  • 143
  • 202