2010-01-14 100 views
15

我可以运行一个Windows服务托管的WCF服务,监听http://localhost:80/MyService,而IIS服务于http://localhost:80上的页面,两者都可以使用。WCF服务如何与IIS监听相同的端口?

但是互联网上的很多地方(如thisthis)都说只有一个进程可以同时监听每个端口。

他们错了吗?

回答

0

难道你是在IIS中托管WCF服务。以便IIS根据URL将请求发送到WCF服务。

编辑: 可能也将WCF服务是建立做这样的端口共享: http://msdn.microsoft.com/en-us/library/ms734772.aspx

EDIT2: 好吧,我重读你编辑的问题,看到这个答案的链接: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/8993f7c5-1f78-4156-a131-d9b40af10d9a

“IP侦听列表允许WCF服务与应用程序共存,该应用程序使用端口作为机器的某些IP地址。如果IP侦听列表包含任何条目,则HTTP服务器API将只绑定到这些IP地址该列表指定。“

+0

不,我将WCF服务作为Windows服务托管,它拥有自己的PID。 – 2010-01-14 22:04:58

+0

编辑该问题以澄清 – 2010-01-14 22:05:51

30

HTTP.sys makes this possible。从文章:

...因为WCF和IIS 6.0都使用内核模式HTTP堆栈(HTTP.sys),IIS 6.0可以与在同一台机器上运行的其他自托管WCF服务共享端口80 ...

HTTP.sys充当HTTP(端口80)通信的端口转发服务。

+0

这就是答案。 HTTP.sys是多个程序可以在Windows下在端口80上侦听的方式。 – jmucchiello 2010-01-14 23:38:09

+1

它也发生在其他端口和协议? http://stackoverflow.com/questions/2085790/can-2-wcf-service-processes-listen-the-same-port – 2010-01-18 12:32:41

+1

所以这就是为什么地狱Windows允许我听8080端口,而Windows媒体服务是HTTP-在同一端口上收听。事情很奇怪。 – sinni800 2011-11-05 23:36:54