IIS7和WCF混淆

时间:2010-12-09 18:48:51

标签: wcf iis-7

假设我正在运行一个网站(在IIS7上),侦听端口8000上的请求。现在这个网站只包含静态内容(即html文件)。因此,当我浏览到URL http://localhost:8000时,浏览器会显示网站的默认html页面。但是,如果我还运行自托管WCF服务,侦听URL http://localhost:8000(此WCF服务不是由IIS托管)上的请求,则浏览器会显示有关WCF服务的数据:

a)对TCP / IP不太了解,但据我所知,一次只有一个应用程序可以监听特定的IP和端口,但是这里的网站和WCF服务都可以监听IP地址和端口号。怎么可能?

b)当我在浏览器中输入本地网址(比如http://localhost:8000)时,浏览器是否通过IIS请求浏览页面?如果是这样,那为什么它显示WCF服务的细节而不是网站的默认页面?毕竟,这个WCF服务甚至不是由IIS托管的。

谢谢

1 个答案:

答案 0 :(得分:2)

通常,只有一个进程可以侦听特定套接字。但是,在Windows中完成了专门为HTTP侦听器支持的工作,特别是在IIS 6.0中引入了HTTP.SYS

基本上,有了这个,内核实际上会侦听HTTP请求,然后连接被路由到user-land中的多个侦听器进程之一。

用于自托管的WCF HTTP侦听器也依赖于HTTP.sys,因此如果需要(或跨多个自托管WCF服务),它们可以与IIS共享端口。