WCF net.tcp 绑定:托管多个服务是否需要端口共享?
WCF net.tcp binding: Is port sharing required to host multiple services?
我们 运行 在 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 是否需要端口共享?
现在我当然可以尝试一下,但我目前只有一台生产服务器可以测试它,想先做一些研究。
您问题的答案:
- 是的,它会像您预期的那样停止工作。你的推理是正确的。
- 使用 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 并更新客户端以查看其工作原理。此更新还需要重新配置所有客户端应用程序,因为它们的服务器将位于不同的端口上。
我们 运行 在 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 是否需要端口共享?
现在我当然可以尝试一下,但我目前只有一台生产服务器可以测试它,想先做一些研究。
您问题的答案:
- 是的,它会像您预期的那样停止工作。你的推理是正确的。
- 使用 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 并更新客户端以查看其工作原理。此更新还需要重新配置所有客户端应用程序,因为它们的服务器将位于不同的端口上。