2012-09-13 89 views
3

我有一個WCF服務需要調用,以便該調用將觸發2-3小時的處理。我使用Windows C#客戶端應用程序來調用服務,並將超時設置爲所有最大值。當我將它部署到Windows Azure時,由客戶端觸發的WCF進程似乎在某一時刻停止。客戶端不會收到超時異常。我可以使用Azure工作者角色,但只能使用WCF代碼完成該過程,因爲這是一項複雜的操作。換句話說,我不能只將執行簡單編輯/插入操作的工作者角色安排到數據庫中。所以我有種雞和雞蛋的問題。後臺進程需要WCF代碼來執行後臺操作,但是WCF似乎在Azure上停留了一段時間。什麼是在WCF中執行長時間運行的調用的方法,以及如何在Azure上執行長時間運行的調用,該調用需要使用託管的雲服務WCF代碼來執行長時間運行的操作?WCF Azure長時間運行

回答

2

這是因爲the load balancer。過去的超時時間爲60秒,但幾個月前這個時間增加到「超過60秒」(取決於併發連接)。無論如何,你需要保持連接活着,以避免超時。

我建議你試試在你的WCF客戶端/服務實現這一點:WCF Azure Net.TCP Keep Alive

爲什麼不重新考慮你的架構?而不是依賴於連接(無論什麼原因可以斷開連接),爲什麼不簡單地讓客戶端在隊列中放置消息?您的工作角色從隊列中選取消息,進行2-3小時的處理,一旦完成,它會將消息放入另一個隊列中。最後,客戶端輪詢其他隊列,一旦有消息到達,它就知道該過程已完成。

0

您可以將長時間運行操作所需的代碼放在單獨的項目中。然後,您可以將此項目包含在WCF解決方案和您的工作人員角色解決方案中。

後臺進程將具有完成該操作所需的所有功能。