代码之家  ›  专栏  ›  技术社区  ›  codeape

wcf net.tcp binding:承载多个服务是否需要端口共享?

  •  0
  • codeape  · 技术社区  · 7 年前

    我们在IIS上托管WCF时遇到了一些问题 SMSvcHost.exe Event Log ID 8 problem )

    IIS设置如下:

    • 一个IIS站点,站点绑定net.tcp(绑定信息808:*)
    • 有一些应用程序
    • 每个运行自己的应用程序池的应用程序
    • 托管一个net.tcp wcf服务的每个应用程序

    web.config 所有net.tcp绑定都有 portSharingEnabled="true"

    问题:

    • 如果我换成 portSharingEnabled="false" ,我怀疑安装程序会停止工作?是真的吗?(我的理由是,如果没有端口共享,多个工作进程就不可能处理同一个端口)
    • 如果是的话,是不是可以让所有应用程序在同一个应用程序池中运行?
    • 或者在IIS中托管net.tcp需要端口共享吗?

    现在我当然可以试试了,但我目前只有一个生产服务器来测试,想先做一些研究。

    1 回复  |  直到 7 年前
        1
  •  1
  •   PavlinII    7 年前

    回答您的问题:

    • 是的,它会像你期望的那样停止工作。你的推理是正确的。
    • 您可以在一个站点下(因此在同一个池中)使用portsharingenabled=“false”拥有多个应用程序。你可以共享那个端口,你只需要拥有不同的地址就可以了。它会工作得很好:
      • net.tcp://example.com:808/firstapp/service.svc
      • net.tcp://example.com:808/secondapp/service.svc
      • net.tcp://example.com:808/thirdapp/service.svc
    • 不需要端口共享。但在这种情况下不能共享端口号。

    您可以尝试转移一个应用程序,看看它是如何工作的。向IIS站点添加一个绑定,向web.config添加具有新端口的第二个端点,并更新客户端以查看其工作方式。此更新还需要重新配置所有客户端应用程序,因为它们的服务器将位于不同的端口上。

    推荐文章