【问题标题】:Azure - run a WCF service as a WebJobAzure - 将 WCF 服务作为 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 共享同一个应用服务吗?

我不知道这是否是正确的方法,还是我真的需要一个虚拟机?

非常感谢任何帮助。

【问题讨论】:

    标签: c# azure wcf asp.net-web-api azure-webjobs


    【解决方案1】:

    您不能将 WCF 项目 TCP 端口暴露给外部,因为应用服务仅支持 80 和 443 用于面向 Internet 的连接。但在应用服务内部,您应该能够打开自定义套接字并使用它在服务之间进行通信。

    文档的最佳位置可从此处获得:

    https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening

    你可以检查几件事:

    1. 确保 WCF 项目使用的是自定义 TCP 端口(不是 80、443)
    2. 您是否在共享计划中运行?

    如果您无法使其正常工作,并且不想使用 Azure 的 IaaS 解决方案(虚拟机)并且更喜欢 PaaS,则可以查看 Azure Service Fabric。您应该很容易使用您的两个服务创建一个 Service Fabric 应用程序。

    【讨论】:

    • 谢谢,我检查了一下,我的 WCF 服务正在使用端口 50001,所以这应该不是问题。我不需要直接从 Internet 访问 WCF,这就是我使用 Web API 的原因。可以毫无问题地加载 Web API,但是在 Azure 中时不会通过对 WCF 的调用。另外,我没有在共享计划中运行 WCF。
    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    相关资源
    最近更新 更多