WCF服務調用超時錯誤:套接字連接已中止。這可能是由於處理消息時出錯或遠程主機超過接收超時或者潛在的網絡資源問題導致的。本地套接字超時是“00:05:30”(已解決)

問題:

  線上正式環境調用WCF服務正常,但是每次使用本地測試環境調用WCF服務時長就是出現:套接字連接已中止。這可能是由於處理消息時出錯或遠程主機超過接收超時或者潛在的網絡資源問題導致的。本地套接字超時是“00:05:30” 這個問題,查閱了網上很多資料各種說法的都有,有的說是什麼請求站點不在同一個域下,有的說什麼應爲datatable中有一個屬性沒有賦值各種答非所問的問題。其實從錯誤信息中就可以看出來其實就是調用超時了。

解決方案:

在調用wcf的服務端的web.config中配置netTcpBinding這個配置,將receiveTimeout完成接收操作提供的時間間隔設置爲:00:05:30即可解決(或者使用默認配置:00:10:00,不配置即可)。

這是我在我的服務端配置的相關參數(僅供大家參考),大家可以根據自己的需求配置:

<netTcpBinding>

    <!--binding:此元素包含標準綁定和自定義綁定的集合-->
    <binding portSharingEnabled="true" receiveTimeout="00:05:30" openTimeout="00:01:00" sendTimeout="00:01:00">
        <!--定義綁定的安全設置,mode="None"禁用安全性--> 
         <security mode="None"/> 
        <!--定義可由採用此綁定配置的終結點進行處理的 SOAP 消息的複雜性約束-->
        <readerQuotas maxDepth="32" maxStringContentLength="65536000" maxArrayLength="65536000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> 
    </binding> 

</netTcpBinding>

 

netTcpBinding配置說明

官方詳細說明☞

security 的 netTcpBinding☞

特性和元素

下列各節描述了特性、子元素和父元素。

特性

特性
特性說明
closeTimeout 一個 TimeSpan 值,指定爲完成關閉操作提供的時間間隔。 此值應大於或等於 Zero。 默認值爲 00:01:00。
hostNameComparisonMode 指定用於分析 URI 的 HTTP 主機名比較模式。 此屬性的類型爲 HostNameComparisonMode,指示在對 URI 進行匹配時,是否使用主機名來訪問服務。 默認值爲 StrongWildcard,表示忽略匹配項中的主機名。
listenBacklog 一個正整數,指定偵聽器上等待接受的最大通道數。 超出此限制的連接會被排隊,直到連接數低於限制值。 connectionTimeout 屬性限制客戶端在引發連接異常之前將等待連接的時間。 默認值爲 10。
maxBufferPoolSize 一個整數,指定此綁定的最大緩衝池大小。 默認值爲 512 * 1024 字節。 Windows Communication Foundation (WCF) 的許多部件使用緩衝區。 每次使用緩衝區時,創建和銷燬它們都將佔用大量資源,而緩衝區的垃圾回收過程也是如此。 利用緩衝池,可以從緩衝池中獲得緩衝區,使用緩衝區,然後在完成工作後將其返回給緩衝池。 這樣就避免了創建和銷燬緩衝區的系統開銷。
maxBufferSize 一個正整數,指定內存中用於存儲消息的緩衝區的最大大小(字節)。

如果 transferMode 屬性等於 Buffered,則此屬性應等於 maxReceivedMessageSize 屬性值。

如果 transferMode 屬性等於 Streamed,則此屬性不能大於 maxReceivedMessageSize 屬性值,應當至少爲標頭的大小。

默認值爲 65536。 有關詳細信息,請參閱 MaxBufferSize
maxConnections 一個整數,指定服務將創建/接受的最大出站和入站連接數。 傳入和傳出連接分別根據此屬性指定的限制進行計數。

超出此限制的入站連接需要排隊,直到連接數低於限制值。

超出此限制的出站連接需要排隊,直到連接數低於限制值。

默認值爲 10。
maxReceivedMessageSize 一個正整數,指定採用此綁定配置的通道上可以接收的最大消息大小(字節),包括消息頭。 如果消息超出此限制,則發送方將收到 SOAP 錯誤。 接收方將刪除該消息,並在跟蹤日誌中創建事件項。 默認值爲 65536。
name 一個包含綁定的配置名稱的字符串。 因爲此值用作綁定的標識,所以它應該是唯一的。 從 .NET Framework 4 開始,綁定和行爲不需要具有名稱。 有關默認配置和無值綁定和行爲的詳細信息,請參閱WCF 服務的簡化配置和簡化配置。
openTimeout 一個 TimeSpan 值,指定爲完成打開操作提供的時間間隔。 此值應大於或等於 Zero。 默認值爲 00:01:00。
portSharingEnabled 一個布爾值,指定是否爲此連接啓用 TCP 端口共享。 如果此值爲 false,則每個綁定都使用自己的獨佔端口。 此設置只與服務相關,因爲客戶端不受影響。
receiveTimeout 一個 TimeSpan 值,指定爲完成接收操作提供的時間間隔。 此值應大於或等於 Zero。 默認值爲 00:10:00。
sendTimeout 一個 TimeSpan 值,指定爲完成發送操作提供的時間間隔。 此值應大於或等於 Zero。 默認值爲 00:01:00。
transactionFlow 一個布爾值,指定綁定是否支持流動 WS-Transactions。 默認爲 false
transactionProtocol 指定與此綁定一起使用的事務處理協議。 有效值爲

-OleTransactions
-WSAtomicTransactionOctober2004

默認值爲 OleTransactions。 此屬性的類型爲 TransactionProtocol
transferMode 一個 TransferMode 值,指定爲請求或響應對消息進行緩衝處理還是流式處理。

子元素

子元素
元素說明
<security> 定義綁定的安全設置。 此元素的類型爲 NetTcpSecurityElement
<readerQuotas> 定義可由採用此綁定配置的終結點進行處理的 SOAP 消息的複雜性約束。 此元素的類型爲 XmlDictionaryReaderQuotasElement
<reliableSession> 指定是否在通道終結點之間建立可靠會話。

父元素

父元素
元素說明
<bindings> 此元素包含標準綁定和自定義綁定的集合。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章