我正在运行 Azure Web 作业和 Azure Web 应用程序。该作业定期运行,并且 Web 应用程序需要作业的结果。我如何在那里得到结果?
我尝试使用 WCF netNamedPipeBinding
,但由于 Azure Web 应用程序没有启动任务,我无法将 net.pipe 绑定(bind)添加到 IIS 网站,也无法启用 net.pipe 协议(protocol)。
我现在可以使用 basicHttpBinding
来工作,但是这个绑定(bind)暴露在整个互联网上,这是我绝对不想要的。我只是希望在同一台机器上运行的 webjob 和 webapp 之间进行机器本地通信。
更正:我以为我可以在 Azure 上运行它,但事实并非如此。在 Azure 上运行时,我从 webjob 中收到错误:尝试以访问权限 127.0.0.1:80 禁止的方式访问套接字
(使用 basicHttpBinding
)。可能该网络应用程序有一个我不知道的内部端口号。
最佳答案
您有几个选择:
- 使用文件系统传递消息
- 使用 Azure 存储队列在两者之间传递消息
- 使用 Azure 服务总线队列传递消息
- 使用任何共享存储(数据库、Azure 存储等)来传递消息
所有这些方法的好处是,它使您的消息传递异步,因此对于两个服务之一(Web 应用程序或 Web 作业)在一段时间内出现故障时更具弹性。
关于c# - 如何从 Azure webjob 到 Azure webapp 进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31114346/