【问题标题】:How can a WCF service listen the same port as IIS?WCF 服务如何侦听与 IIS 相同的端口?
【发布时间】:2011-01-05 06:52:21
【问题描述】:

当 IIS 在 http://localhost:80 上提供页面时,我可以运行一个 Windows 服务托管的 WCF 服务来监听 http://localhost:80/MyService,并且两者都可以工作。

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

他们错了吗?

【问题讨论】:

    标签: wcf iis sockets tcp communication


    【解决方案1】:

    HTTP.sys makes this possible。来自文章:

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

    HTTP.sys 充当端口转发服务,用于 HTTP(端口 80)流量。

    【讨论】:

    • 这就是答案。 HTTP.sys 是多个程序在 Windows 下监听 80 端口的方式。
    • 其他端口和协议也会发生这种情况? stackoverflow.com/questions/2085790/…
    • 这就是为什么 Windows 允许我监听端口 8080,而 Windows Media 服务在同一端口上进行 HTTP 监听。事情很奇怪。
    【解决方案2】:

    可能是您在 IIS 中托管 WCF 服务。这样 IIS 就会根据 URL 向 WCF 服务发送请求。

    编辑: 也可能是 WCF 服务被设置为像这样进行端口共享: http://msdn.microsoft.com/en-us/library/ms734772.aspx

    编辑2: 好的,我重新阅读了您编辑的问题,请参阅此答案中的链接: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/8993f7c5-1f78-4156-a131-d9b40af10d9a

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

    【讨论】:

    • 不,我将 WCF 服务作为 Windows 服务托管,它有自己的 PID。
    • 编辑问题以澄清
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2019-01-03
    • 1970-01-01
    相关资源
    最近更新 更多