Azure - 将 WCF 服务作为 WebJob 运行
Posted
技术标签:
【中文标题】Azure - 将 WCF 服务作为 WebJob 运行【英文标题】:Azure - run a WCF service as a WebJob 【发布时间】:2018-04-28 09:45:29 【问题描述】:我有一个向 WCF 服务器发送请求的 Web API。 WCF 项目正在使用 TopShelf 启动。
我的计划是将 API 和 WCF 都发布到 Azure。 为此,我在云中创建了一个应用服务,并在应用服务中发布了 Web API。
WCF 以 WebJob 的形式发布,因为我需要它连续运行,但是我收到此错误:
Topshelf.Hosts.ConsoleRunHost 错误:0:发生异常,System.ServiceModel.AddressAlreadyInUseException
这是因为 Web API 和 WCF 共享同一个应用服务吗?
我不知道这是否是正确的方法,还是我真的需要一个虚拟机?
非常感谢任何帮助。
【问题讨论】:
【参考方案1】:您不能将 WCF 项目 TCP 端口暴露给外部,因为应用服务仅支持 80 和 443 用于面向 Internet 的连接。但在应用服务内部,您应该能够打开自定义套接字并使用它在服务之间进行通信。
文档的最佳位置可从此处获得:
https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening
你可以检查几件事:
-
确保 WCF 项目使用的是自定义 TCP 端口(不是 80、443)
您是否在共享计划中运行?
如果您无法使其正常工作,并且不想使用 Azure 的 IaaS 解决方案(虚拟机)并且更喜欢 PaaS,则可以查看 Azure Service Fabric。您应该很容易使用您的两个服务创建一个 Service Fabric 应用程序。
【讨论】:
谢谢,我检查了一下,我的 WCF 服务正在使用端口 50001,所以这应该不是问题。我不需要直接从 Internet 访问 WCF,这就是我使用 Web API 的原因。可以毫无问题地加载 Web API,但是在 Azure 中时不会通过对 WCF 的调用。另外,我没有在共享计划中运行 WCF。以上是关于Azure - 将 WCF 服务作为 WebJob 运行的主要内容,如果未能解决你的问题,请参考以下文章