我有一個WCF服務方法需要兩個多小時才能執行(運行一些報告)。我如何確保它不會超時而不考慮所花費的時間?我認爲在WCF配置中有很多超時設置,我不確定哪一個與我有關。對於ASMX webservices,有一個選項可以指定無限超時設置,對於WCF有沒有類似的選項?我是否也需要爲此更改任何IIS設置(WCF服務託管在IIS中),如回收工作進程,空閒超時等?長時間運行WCF服務的設置超時
回答
你有沒有考慮過使用回調?您的客戶端發送請求,然後等待服務器發出通知,以便完成時間?這可能需要對客戶進行更改,但通過這種方式,您的服務可以「喋喋不休」並告訴客戶報告何時完成。
幫助:http://idunno.org/archive/2008/05/29/wcf-callbacks-a-beginners-guide.aspx
WCF超時: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/
你也應該考慮在客戶端超時,以及。 (binding.OpenTimeout,ReceiveTimeout,CloseTimeout等)
另一種辦法是舉辦WCF在Windows服務,它可以簡化您的情況,因爲它從公式中刪除IIS:
http://msdn.microsoft.com/en-us/library/ms733069.aspx
或者,使用單向WCF調用怎麼樣?這樣,該呼叫將在發送請求後立即返回給客戶端。
這是濫用網絡服務。不要這樣做。
而是讓Web服務啓動長時間運行的操作,並在單獨的進程中運行。如果客戶需要知道報告何時完成,那麼讓「獨立流程」跟蹤報告的創建並在報告完成時記錄。客戶端可以調用Web服務來檢查該狀態。
你真的不希望依賴於HTTP連接保持打開幾個小時。這是一個網絡。事情發生在網絡上。壞事。
是的,我認爲你是對的,我想在Windows服務中託管WCF服務,看看是否解決了超時問題。 – RKP 2011-01-06 10:22:11
考慮創建WCF workflow service(使用WF)來代替。這些特別設計用於處理長時間運行的進程,尤其是在使用持久性時。
感謝您的答覆。這不是一個工作流程,它只是一個需要很長時間才能執行的任務,所以使用WF可能是一個矯枉過正的工作。 – RKP 2011-01-06 10:23:42
- 1. 長時間運行WCF服務
- 2. 運行長時間運行的服務
- 3. 爲WCF web服務設置DNS超時
- 4. 長時間運行的進程超時和Windows服務(Python)
- 5. 長時間運行WCF Singleton
- 6. WCF Azure長時間運行
- 7. 長時間運行的查詢超時
- 8. WCF數據服務運行時間EDMX
- 9. WCF服務超時
- 10. WCF服務超時
- 11. 超時WCF服務
- 12. Android長時間運行活動/服務
- 13. 長時間運行Windows服務
- 14. Android長時間運行服務
- 15. 長時間運行ADK附件(服務?)
- 16. 長時間運行Android'服務'
- 17. 長時間運行android後臺服務
- 18. WCF長時間運行的過程
- 19. 調用其他長時間運行的工作流服務的長時間運行的工作流服務
- 20. 如何在Delphi中設置wcf服務調用者的超時時間?
- 21. 在忙於長時間運行的操作時Ping應答WCF服務
- 22. 超時異常的WCF服務行爲
- 23. WCF Dataservice的設置超時
- 24. 當所有超時參數設置爲最大值時,WCF服務超時
- 25. WCF服務不遵守超時配置
- 26. WCF服務綁定 - 超時配置
- 27. WCF在運行時在服務上設置綁定
- 28. RIA服務WCF超時
- 29. WCF服務和超時
- 30. 異步WCF服務超時
是的,我試圖在Windows服務中託管WCF服務,我認爲回調在這種情況下不合適,因爲它是一個長時間運行的任務,用戶不能期望等待這麼長時間才能獲得通知結果。這是一次火災和忘記呼叫,用戶只需檢查網絡上的文件系統,看看是否已創建報告。起初我反對使用Windows服務,因爲安裝和卸載的麻煩,所以我嘗試使用IIS,但它造成超時問題。 – RKP 2011-01-06 10:20:08
如何在WCF中使用單向呼叫? http://stackoverflow.com/questions/774648/need-sample-fire-and-forget-async-call-to-wcf-service – Larsbj 2011-01-06 16:26:12