簡體   English   中英

由於網絡不良,WCF異步方法失敗

[英]WCF Async methods failure because of bad network

我是WCF新手。 我很想知道關於異步方法的兩件事:

  1. 當我向服務發送請求時,由於某種原因網絡出現故障會發生什么? 我是否會遇到任何類型的異常或類似的東西?

  2. 如果網絡在服務嘗試響應請求時出現故障,會發生什么? 結果會丟失嗎?

謝謝您的幫助!

通過TCP(包括HTTP)向WCF發送消息通過三個階段變得粗糙:

  1. 客戶端將消息發送到WCF服務
  2. 只有在成功接收到整個消息后,才會對其進行反序列化,並將其內容傳遞給相應的服務操作。 服務操作運行完成。
  3. 響應(即您從服務操作返回或拋出的內容)將被發送到客戶端。

如果連接在1.期間丟失,則您的服務將看不到該消息,並且您的客戶端將拋出異常。

如果連接在2.期間丟失, 我認為 (但您可以輕松地模擬,例如使用Thread.Sleep() )服務操作繼續執行。

如果連接在3.期間丟失,則響應將丟失,但操作將運行。

如果服務沒有響應,將拋出異常。 該程序將收到例外。 你可以使用try ... catch塊來捕獲它。 然后寫入日志文件,如果你想記錄它。

根據我的經驗,大多數第一個連接需要時間來初始化。 有時,如果服務dint響應,我會收到EndpointNotFoundExceptionTimeoutException

因此,我創建了一種方法來通過將消息“連接”傳遞給服務來初始化連接,如果建立連接,服務將返回一個“連接”消息。 否則,如果它返回異常,我將讓它重試。

我設置重試次數= 5.如果連接仍未建立,它將循環5次。 一旦建立,它將繼續進行下一個過程。

我們無法控制網絡連接,我們無法期待和哪一點,它失敗了哪一部分。 但是我們可以在服務失敗時控制我們的程序。 如果服務失敗,取決於您想要做什么。 也許清理數據,重啟過程或立即停止程序並記錄錯誤進行調查。

暫無
暫無

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

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