Dot-Net

WCF Windows 服務超時

  • November 7, 2013

我有一個在 .net 中開發的客戶端應用程序向 wcf 服務發送請求並應該發送響應。如果執行時間在 1 分鐘內,則沒有錯誤,如果超過 1 分鐘,則錯誤是

內部異常:發送到 net.tcp://localhost:18001/PitToPort/2008/01/30/StockpileService/tcp 的請求操作在配置的超時 (00:01:00) 內沒有收到回复。

分配給此操作的時間可能是較長超時的一部分。這可能是因為服務仍在處理操作,或者因為服務無法發送回复消息。請考慮增加操作超時(通過將通道/代理轉換為 IContextChannel 並設置 OperationTimeout 屬性)並確保服務能夠連接到客戶端

如何增加超時以及如何增加?什麼是最好的解決方案?

請注意,此錯誤消息是 WCF 在不知道發生了什麼時發送的樣板字元串。它的真正意思是“嗯,鏈中出了點問題,但我不確定是什麼,所以,這裡有一些關於配置的瑣事,用它做你想做的事”。

大多數情況下,當您收到此消息時,它與實際超時無關。它可以是配額(圖表中的對像數量、總體大小、數組長度)或在服務方法返回結果和通過網路發送實際字節之間出現的伺服器端錯誤。因此,您應該檢查您的配置設置(而不是超時,除非您實際上必須等待一分鐘才能收到錯誤。如果您立即收到錯誤,則與超時無關)。

這個無用的消息在我的 WCF 煩惱列表的頂部。

超時稱為“sendTimeout”,您可以在配置文件的綁定部分或程式碼中配置它 - 您可以選擇。

配置:

 <system.serviceModel>
   <bindings>
     <netTcpBinding>
       <binding sendTimeout="00:03:00" />
     </netTcpBinding>
   </bindings>

這會將超時設置為 3 分鐘。

馬克

引用自:https://stackoverflow.com/questions/919287