簡體   English   中英

如何從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有一個我不知道的內部端口號。

你有幾個選擇:

  1. 使用文件系統傳遞消息
  2. 使用Azure存儲隊列在兩者之間傳遞消息
  3. 使用Azure Service Bus Queue傳遞消息
  4. 使用任何共享存儲(數據庫,Azure存儲等)來傳遞消息

所有這些方法的好處是它使您的消息傳遞異步,因此對兩個服務(Web應用程序或Web作業)中的一個下降一段時間更具彈性。

您可以使用文件系統在WebJob和網站之間進行通信。 它們之間以及所有實例之間共享。

只需從WebJob寫一個文件,並使用webapp中的文件系統觀察程序來識別文件的創建或更改時間。

請注意,您無法通過Azure網站(或WebJobs)中的localhost進行通信,也無法偵聽非80/443的端口。

您可以使用azure服務總線隊列,然后指向您的服務(Web應用程序)以使用隊列中的消息。

最接近的答案是在App Settings中設置WEBSITE_DISABLE_SCM_SEPARATION=true 這將使WebApp和SCM進程在同一個沙箱中工作。 不幸的是,Azure不推薦使用此選項,不再支持此選項。 謝謝大家嘗試答案。 更多信息可以在這里找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM