如何从 Azure webjob 到 Azure webapp 进行通信?
How to communicate from Azure webjob to Azure webapp?
我是 运行 Azure webjob 和 Azure webapp。作业定期运行,作业的结果需要在 webapp 中。我如何在那里得到结果?
我尝试使用 WCF netNamedPipeBinding
,但由于 Azure webapps 没有启动任务,我无法将 net.pipe 绑定添加到 IIS 网站,也无法启用 net.pipe 协议.
我现在可以使用 basicHttpBinding
但此绑定会暴露在整个互联网上,我绝对不希望这样。我只是想在同一台机器上的 webjob 和 webapp 运行 之间进行机器本地通信。
更正:我以为我可以在 Azure 上使用它,但事实并非如此。在 Azure 上 运行 时,我从 webjob 收到错误消息:An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:80
(使用 basicHttpBinding
)。可能 webapp 有一个我不知道的内部端口号。
您可以使用 azure 服务总线队列,然后指向您的服务(网络应用程序)以使用队列中的消息。
您可以使用文件系统在 WebJob 和网站之间进行通信。
它在它们之间以及您的所有实例之间共享。
只需从 WebJob 写入一个文件,然后在您的 Web 应用程序中使用文件系统观察器来识别文件何时创建或更改。
Note you cannot communicate through localhost in Azure Websites (or WebJobs) and cannot listen on a port that is not 80/443.
您有几个选择:
- 使用文件系统传递消息
- 使用 Azure 存储队列在两者之间传递消息
- 使用 Azure 服务总线队列传递消息
- 使用任何共享存储(数据库、Azure 存储等)传递消息
所有这些方法的好处是,它使您的消息传递异步,因此对两种服务之一(网络应用程序或网络作业)在一段时间内出现故障时更具弹性。
最接近的答案是在应用设置中设置WEBSITE_DISABLE_SCM_SEPARATION=true
。这将使 WebApp 和 SCM 进程在同一个沙箱中工作。遗憾的是,此选项已被 Azure 弃用且不再受支持。感谢大家尝试回答。可以在此处找到更多信息。
我是 运行 Azure webjob 和 Azure webapp。作业定期运行,作业的结果需要在 webapp 中。我如何在那里得到结果?
我尝试使用 WCF netNamedPipeBinding
,但由于 Azure webapps 没有启动任务,我无法将 net.pipe 绑定添加到 IIS 网站,也无法启用 net.pipe 协议.
我现在可以使用 basicHttpBinding
但此绑定会暴露在整个互联网上,我绝对不希望这样。我只是想在同一台机器上的 webjob 和 webapp 运行 之间进行机器本地通信。
更正:我以为我可以在 Azure 上使用它,但事实并非如此。在 Azure 上 运行 时,我从 webjob 收到错误消息:An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:80
(使用 basicHttpBinding
)。可能 webapp 有一个我不知道的内部端口号。
您可以使用 azure 服务总线队列,然后指向您的服务(网络应用程序)以使用队列中的消息。
您可以使用文件系统在 WebJob 和网站之间进行通信。 它在它们之间以及您的所有实例之间共享。
只需从 WebJob 写入一个文件,然后在您的 Web 应用程序中使用文件系统观察器来识别文件何时创建或更改。
Note you cannot communicate through localhost in Azure Websites (or WebJobs) and cannot listen on a port that is not 80/443.
您有几个选择:
- 使用文件系统传递消息
- 使用 Azure 存储队列在两者之间传递消息
- 使用 Azure 服务总线队列传递消息
- 使用任何共享存储(数据库、Azure 存储等)传递消息
所有这些方法的好处是,它使您的消息传递异步,因此对两种服务之一(网络应用程序或网络作业)在一段时间内出现故障时更具弹性。
最接近的答案是在应用设置中设置WEBSITE_DISABLE_SCM_SEPARATION=true
。这将使 WebApp 和 SCM 进程在同一个沙箱中工作。遗憾的是,此选项已被 Azure 弃用且不再受支持。感谢大家尝试回答。可以在此处找到更多信息。