2011-04-07 59 views
0

我在我的項目中遇到了一些關鍵問題。在交易期間(wcf + netTCP) 我得到的例外是。WCF + net.tcp通訊超時問題

The communication object, 
System.ServiceModel.Channels.ClientFramingDuplexSessionChannel, 
cannot be used for communication because it is in the Faulted state. 

在WCF服務app.config中添加具有超時規範的綁定標記。但我的交易已經在10分鐘內結束。究竟是什麼問題..

<bindings> 
     <basicHttpBinding> 
     <binding name="ServiceSoap" closeTimeout="0:01:00" openTimeout="0:01:00" receiveTimeout="10:00:00" sendTimeout="10:00:00" allowCookies="false" 
      bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
      useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" 
       realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
     <netTcpBinding> 
     <binding name="b1" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="infinite" sendTimeout="10:00:00" 

transferMode="Buffered" 

maxBufferPoolSize="524288" 

maxBufferSize="65536" 

maxConnections="10" 

maxReceivedMessageSize="65536"> 
      <security mode="None" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 

任何一個可以幫助我!!!

回答

4

我不知道爲什麼你認爲它超時的問題?錯誤消息不建議超時發生。服務器可能會拋出異常嗎?

我強烈建議設置WCF tracing。它有點涉及,但真的值得做,因爲我已經解決了許多模糊的WCF問題。

+1

您好Jon能解釋如何解決這個問題。我需要修復這個問題 – 2011-04-08 04:23:18

+0

沒有看到更多的代碼,我不知道如何解決這個問題。可能存在序列化問題?您確實需要設置WCF跟蹤來進一步調試問題。 – 2011-04-08 07:39:12

1

這不是一個完整的答案,但如果你正在使用的客戶端+服務器在同一臺機器上,你可以使用一個名爲 - 管道綁定,而不是netTcp

綁定部分的配置可能如下所示。

<netNamedPipeBinding> 
    <binding name="infiniteOpenBindingConfig" receiveTimeout="infinite" closeTimeout="infinite"> 
    </binding> 
</netNamedPipeBinding> 

要使綁定無限期地保持活動狀態,必須在服務器和客戶端上同時設置上述配置。

+0

我正在使用服務器機器的不同地方。可能是我嘗試使http而不是netTcp – 2011-04-07 08:42:21

+0

任何人都有這個解決方案 – 2011-04-07 08:45:42

2

嘗試添加以下內容到NetTcpBinding的:

<reliableSession inactivityTimeout="infinite" enabled="true" /> 

如果不工作,使WCF跟蹤來找出發生了什麼殺死它。